이코드에서 prime가 하는역할이궁금해서이렇케글을올림니다;..
얀새
2023.04.01
#include stdio.h
void main()
{
int i,j,prime;
for(i=2;i=100;i++)
{
prime=1;
for(j=2;ji;j++)
{
if(i%j==0)
prime=0;
}
if(prime!=0)
printf(%3d,i);
}
}
prime가하는역할이랑 i=2 j=2 를 1로바꾸니 소수가안구해지더군요;;
그이유좀;
-
뽀야
prime는 소수가 아닌수를 걸러내는 역할을 합니다.
if(i%j==0)
prime=0; -여기서 보면 i를 j로 나눈 나머지가 0일때 prime이 0이 되므로 그떄는 printf(\%3d\ -
VanilLa
prime 변수를 1로 세팅하는 것은 현재의 i가 소수라고 가정하는 것이고
i % j(i를 j로 나눈 나머지)가 0이면 나누어 떨어져 소수가 아니므로 prime 변수를 0으로 지웁니다.
그리고 prime이 0이 아니라면, 즉 소수라면 출력하는 것이죠.
소수는 자기자신과 1만을 소수로 가지는 정수를 말합니다.
j를 1부터 시작하면 i % j에서 1로 나누어 떨어지고 소수가 아니라고 판단하게 되는건데, 이는 틀린 계산이기 때문입니다.