소수 구하는건 이전에 다 해놨었고 입력값이 a면 2a만큼 범위를 지정하면 될 것 같다.
0으로 종료하는건 간단하니 마지막에 넣어주자
갯수를 구하는거니까 count를 사용해주자.
주의해야할건 n보다 크고 2n보다 작다는거다. <=가 아니고 < 이거다. 끝
#include <stdio.h>
int ft_is_prime(int nb)
{
int i;
i = 2;
if (nb < 2)
return (0);
while (i <= (nb / i))
{
if (nb % i == 0)
return (0);
i++;
}
return (1);
}
int main()
{
int a;
while (1) // 무한루프로 a == 0일때까지 돌아감
{
scanf("%d", &a);
int count = 0;
if (a == 0) // 종료조건
return 0;
int b = a + a; // 범위설정
while (a < b)
{
a++;
if (ft_is_prime(a) == 1)
count++; // print대신 소수면 count++로 개수세준다.
}
printf("%d\n", count);
}
}
isprime 저번에 쓴거 고대로 가져왔다. 유형을 익혀가니까 문제가 점점 보인다.