【发布时间】:2014-08-05 18:30:09
【问题描述】:
我正在尝试查找 5915587277 是否为素数。 这个数字实际上是素数,我希望我的程序会这样。 当我运行这个程序时,它说它不是素数,它的除数是 199。
#include<stdio.h>
int main()
{
long n = 0;
long i = 0;
printf("Enter Number: ");
scanf("%ld", &n);
long m = n/2;
if(n%2 == 0)
{
printf("Not Prime");
return 0;
}
for( i = 3; i <= m; i++)
{
if(n%i == 0)
{
printf("Not Prime: %d\n", i);
return 0;
}
}
printf("Prime");
return 0;
}
我不知道为什么这段代码将这个数字打印为非素数。
【问题讨论】:
-
好的,那你有什么问题?
-
它对我有用,说它是素数。但我使用的是 64 位架构。另外,您的
for循环增量条件应该是i+=2,首先它更快;其次,如果你加 1,那么你之前的if就没有意义了。 -
阅读更多关于primality test的信息。这是一个难题。
-
5915587277 - 2^32 = 1620619981 = 199 * 8143819