我试图找出 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;
}
我不确定为什么这段代码会将此号码打印为非素数。
答案 0 :(得分:9)
你超过最长值。请参阅Data type limits。
答案 1 :(得分:0)
您使用的是哪种类型的编译器?如果它支持64位数,那么你可以这样做。另一件事是使用无符号长整数来存储最大值。你的代码很好,但你需要刷新你的知识,最大值可以存储特定的数据类型。 希望这个答案对你有所帮助。