啊哈磊_编程从这里起步
标题:
求助~~ 程序运行到一半卡住,高手看看是哪里有问题呢~
[打印本页]
作者:
z275813760
时间:
2012-7-24 10:03
标题:
求助~~ 程序运行到一半卡住,高手看看是哪里有问题呢~
/*代码如下:*/
#include <stdio.h>
int hw(int m)
{
int y,s=0;
y=m;
while(y)
{
s=s*10+y%10;
y=y/10;
}
if(s==m)
return 1;
else
return 0;
}
int main()
{
int a,b,c,d=1,n=0;
for(a=2;a<1000000;a++)
{
c=a/2;
for(b=2;b<=c;b++)
if(a%b==0)
{d=0;break;}
if(d)
{
if(hw(a))
{
printf("%d ",a);
n++;
}
}
d=1;
}
printf("\n%d\nEnd",n); /*这一句总是输出不出来。如果将1000000改小的话,程序一切正常。*/
sleep(5000);
return 0;
}
/*是为了求出1~1000000中有多少个回文质数。*/
作者:
回遗未来
时间:
2012-7-24 10:03
z275813760 发表于 2012-7-24 17:46
我自己发现不对的地方了。 c=a/2;在数字大了之后就无法运算了,只有把它改成c=sqrt(a);才可以运算成功。 ...
一个是除一个是开方,能一样?百万内除法没问题的……真正原因是1000000*500000循环缓冲区溢出,开方减少了几个数量级
作者:
13410046343
时间:
2012-7-24 16:01
把int改为长整型long int 试一下
作者:
z275813760
时间:
2012-7-24 17:46
我自己发现不对的地方了。
c=a/2;在数字大了之后就无法运算了,只有把它改成c=sqrt(a);才可以运算成功。
而且要在之前引入头文件math.h。
即在最前面写入代码:#include <math.h>
作者:
Primer_Plus
时间:
2012-7-25 16:53
致命错误:循环变量应是整形
作者:
超神级
时间:
2013-7-24 10:54
%b加个l函数完美运行
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2