A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

麻烦大神看下下面的代码,就是求100以内的素数和,我觉得我思路没问题,但是为啥就是算不对呢?


public class SushuSum
{
public static void main(String args[])
{
int i,j,k=0,sum=0;
for(i=2;i<=100;i++)
{
for(j=2;j<i;j++)
{
if(i%j!=0)
k=k+i;
}
sum=sum+k;
}
System.out.println("0~100内的素数和为"+sum);
}


}

2 个回复

倒序浏览
本帖最后由 hansnowqiang 于 2015-11-29 00:22 编辑

你这条件有问题吧;
比如:i=5
j = 2  满足条件  k=k+5;
j = 3  满足条件  k=k+5;
j = 4  满足条件  k=k+5;
你这个k定义的有问题。完全不知道k是什么。条件应该是i%j==0时跳过这个i直接到下一个i
用continue外循环
即:有能整除的就不是素数。
希望能有帮助。

回复 使用道具 举报
代码改了一点
  1. /**
  2. * 求100以内素数之和
  3. * @author Administrator
  4. *
  5. */
  6. public class Face4 {

  7.         public static void main(String[] args) {
  8.                 int i,j,k=0,sum=0;
  9.                 a:for(i=0;i<=100;i++){
  10.                         b:for(j=2;j<i;j++){
  11.                                 if(i%j==0)continue a;//只要发现有除1和本身外的约数,继续外层循环
  12.                         }
  13.                         System.out.println(i);
  14.                         sum=sum+i;
  15.                 }
  16.                 System.out.println("0~100内的素数和为"+sum);
  17.         }
  18. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马