写了一个判断素数的程序,能不能帮我找找漏洞在哪儿
如题,写了一个判断素数的程序,但是运行了后没有反应 #include <stdio.h>int main()
{
unsigned long int input,div;
_Bool _isprime;
while (scanf("%lu", &input))
div = 2;
for (_isprime = 0;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 1;
}
}
while (_isprime)
printf("%lu is prime number!",input);
return 0;
}
因为怕显得太乱,就把代码放在评论这里了 才发现数学逻辑有点问题,_isprime == 0才是素数,但是没有什么关系,我现在主要不明白上面for那一块为什么没打印东西出来=- = JackII 发表于 2020-4-7 14:33
才发现数学逻辑有点问题,_isprime == 0才是素数,但是没有什么关系,我现在主要不明白上面for那一块为什么 ...
#include <stdio.h>
int main()
{
unsigned long int input,div;
_Bool _isprime = 1;
scanf("%d", &input);
while (1)
for (div = 2;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 0;
goto Label;
}
}
Label: ;
if (_isprime)
printf("%lu is prime number!",input);
return 0;
} #include <stdio.h>
int main()
{
unsigned long int input,div;
_Bool _isprime;
while (scanf("%lu", &input))
div = 2;
for (_isprime = 0;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 1;
}
}
while (_isprime)
printf("%lu is prime number!",input);
return 0;
}
#include <stdio.h>
int main()
{
unsigned long int input,div;
_Bool _isprime;
while (scanf("%lu", &input)) {
div = 2;
}
for (_isprime = 0;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 1;
}
}
while (_isprime)
printf("%lu is prime number!",input);
return 0;
} #include <stdio.h>
int main(void)
{
unsigned long int input,div;
_Bool _isprime;
while (scanf("%lu", &input)) {
div = 2;
for (_isprime = 0;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 1;
}
}
}
while (_isprime)
printf("%lu is prime number!",input);
return 0;
} #include <stdio.h>
int main()
{
unsigned long int input,div;
int _isprime;
while (scanf("%lu", &input))
{
div = 2;
for (_isprime = 0;div * div <= input;div++)
{
if (input % div == 0)
{
printf("%lu is divisible by %lu and %lu!",input,div,input/div);
_isprime = 1;
continue;
}
}
while (_isprime)
{
printf("%lu is prime number!",input);
break;
}
}
return 0;
}
我用的c89没有布尔型,你想用布尔型改的话你看着改就可以,
页:
[1]