为了账号安全,请及时绑定邮箱和手机立即绑定

我想知道怎么样才能不重复输出素数,求大神帮忙回答

我想知道怎么样才能不重复输出素数,求大神帮忙回答

雯子wenzi 2016-07-23 11:37:41
package project2;import java.math.*;public class Test3 { public static void main(String[] args){ int sum=0; for(int i=101;i<=200;i++){ for(int j=2;j<=i;j++){ if(i%Math.sqrt(j)!=0){ System.out.println(i); } } } System.out.println(sum); }}
查看完整描述

1 回答

?
luofuxiang

TA贡献34条经验 获得超34个赞

素数描述为“不能只能被1和它本身整除的正整数”,楼主判断素数的条件好像有问题。这里给出了能够求出101-200之间所有素数并求和的代码,调试已通过,不知是否满足楼主要求。

源代码:

import java.math.*;

public class Test3 {
    public static void main(String[] args){
    int sum=0;
    for(int i=101;i<=200;i++){
        int j=2;
        for(;j<i;j++){
            if(i%j==0) break;/*除了1和它本身之外还能被其它的书整除,表示该数i不为素数,跳出循环*/
        }
        if(j<i){/*如果是由于跳出循环执行这条语句的,则忽略此时的i,继续执行外循环*/
            continue;
        }else/*否则,打印出素数*/
        {
            System.out.print(i+", ");
            sum+=i;
        }
    }
    System.out.println();
    System.out.println("101-200之间所有素数之和 = " + sum);
    }
}

输出结果:

101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 
101-200之间所有素数之和 = 3167
查看完整回答
1 反对 回复 2016-07-23
  • 雯子wenzi
    雯子wenzi
    你好!以下步骤我不明白,可否详细点解释 if(j<i){/*如果是由于跳出循环执行这条语句的,则忽略此时的i,继续执行外循环*/ continue;
  • luofuxiang
    luofuxiang
    这个判断是为了确定j是否循环了i次,若循环了i次,则表示1~i范围之内除了1和i之外,i不存在其它的约数,即i为素数。若没有循环到i次(j<i),则表示前面的循环没有结束就跳出了(前面跳出循环的条件是i%j==0,即找到了约数),那么此时的i存在除了1和它本身之外还有约数,i不是素数,用continue语句跳过这个i。程序猿表达能力不强,楼主见谅 (  ̄▽ ̄)σ
  • 1 回答
  • 0 关注
  • 1203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信