代码如下,本来应该显示10001-19999中间可以分解成两个素数相乘的所有数的,在输出界面滚动的时候还有一万一千多,一万两千多的数,但是输出界面滚动完毕之后就只有一万八千以上了,只有一部分了,为什么?
#include<stdio.h>
#include<math.h>
int sushu (int m)
{
int i;
if (m == 2) return 1;
if (m == 1 || m % 2 == 0) return 0;
for (i = 3; i * i <= m;)
{
if (m % i == 0) return 0;
i += 2;
}
return 1;
}
int main()
{
int i,n;
for(n=10000; n<20000; n++)
{
for(i=2; i<sqrt(n); i++)
{
if(sushu(i)&&sushu(n/i)&&n%i==0)
printf("%d\n",n);
}
}
return 0;
}
其实你可以输出到一个文本文件里,这样更文件查看.方法是使用fopen建立一个文本文件,然后向该文本文件中写入数据,代替你程序中的printf("%d\n",n);
即可。想查看的时候,打开你所建立的文本文件就可以了。追问
但是OJ上显示答案错误啊。
追答你不是说你显示的内容不完整吗?难道你的程序在算法上有问题吗?
追问我认为没错误啊。帮看看哪里有问题。
追答你的程序在算法上当然没有错误,我的意思是说你不要把程序的输出结果直接输出到屏幕上,这样由于缓存在原因,当超过一定量时,必然会显示不全。你把显示的结果保存至一个文件中就可以了。实在不想写输出文件的话使用DOS中的输出符号>定向输出到一个文本文件中也行。
追问但是是提交到OJ上。显示答案错误。。求解求解啊