VC++问题》很明显800180047是800180047的约数,可为甚麽下面的程序数不出来啊?

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:11:21
#include<stdio.h>
#include<math.h>
main ()
{
double num=800180047,i;
int n=0;
for (i=1;i<=800180047;i++)
{
if (fmod(num,i)==0) n=n+1,printf("%12.0lf",i);//i是double,%左右两边都是int型,错,得用fmod()
if (n==6){printf("\n");break;}//这里退出,不然一直打空行
}
printf("\n\n");
printf("%12.0lf",num);
}

牵扯到数值的比较的时候最好不要定义成double型的变量,用int型就可以了,如果数值很大可以用long试试。fmod(num,i)这里估计有隐性的类型转换了,把int型的转换成了double型,你可以这样试试fmod(num,(int)i)