【发布时间】:2023-03-16 07:58:01
【问题描述】:
问题是求600851475143这个数的最大质因数,我的代码是:
#include <stdio.h>
#include <math.h>
int main()
{
float i,x;
float a,y;
for(a=2;a<=600851475143;a++)
{
y=fmod(600851475143,a);
if(y==0)
{
int sum=0;
for(i=2;i<=a/2;i++)
{
if(fmod(a,i)==0)
{
sum=1;
break;
}
}
if(sum==0&&a>x)
x=a;
// printf("%f\n",x );
}
}
printf("%f\n",x );
return 0;
}
为什么我的 printf 函数不起作用?当我将 printf 放在上面(以 cmets 显示)时,它可以工作,但最后一个 printf 不起作用。为什么?
【问题讨论】:
-
先尝试初始化
x=0,然后检查是否打印 -
您的数字不会以足够的精度表示为浮点数。需要 double 或 long long。
-
还是不行
-
但它在注释的 printf 中工作
-
600,851,475,143 是一个巨大的数字,您的循环不会在超级计算机上完成。这就是为什么您看不到最后一个 printf 的原因,因为程序仍在循环中。如果 'a' 在此之前没有溢出,那么 ti 永远不会完成。