当前位置: 代码迷 >> C语言 >> [求助]为什么不对呢?
  详细解决方案

[求助]为什么不对呢?

热度:101   发布时间:2006-06-22 19:40:16.0
[求助]为什么不对呢?
输出大于500的前5个素数的和
我是这样写的;
main()
{int n,i,t=0;
long s;
for(n=500;t<=5;n++)
{for(i=2;i<n;i++)
if(n%i!=0) break;
else
if(i>=n)
{s=s+n;t++;}
}
printf("%d",s);
}
----------------解决方案--------------------------------------------------------

我运行了2分钟也没出结果 ......


----------------解决方案--------------------------------------------------------

要对S初始化.


----------------解决方案--------------------------------------------------------

s没赋初值!!!

[此贴子已经被作者于2006-6-22 20:24:19编辑过]


----------------解决方案--------------------------------------------------------
以下是引用小雨点的家在2006-6-22 19:40:16的发言:
输出大于500的前5个素数的和
我是这样写的;
main()
{int n,i,t=0;
long s;
for(n=500;t<=5;n++)
{for(i=2;i<n;i++)
if(n%i!=0) break;
else
if(i>=n)
{s=s+n;t++;}
}
printf("%d",s);
}

我明白了,应是t=1
且if(n%i==0) break;
if(i>=n)
{s=s+n;t++;}
但结果怎么不对啊?
----------------解决方案--------------------------------------------------------
/*代你改了一下:*/
#include<stdio.h>
main()
{ int n,i,t=0;
long s=0;
for(n=500;t<=5;n++)/*循环条件可能应为t<5,因为你是从t=0开始的*/
{
for(i=2;i<n;i++)
/*if(n%i!=0) break;大错*/
if(n%i==0) break;
/*else大错*/
if(i>=n)
{ s=s+n;t++; }
}
printf("%d",s);
}
----------------解决方案--------------------------------------------------------

  相关解决方案