计算1-100以内的素数并且对这些素数求和的两个算法

首先素数的概念是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。这点要先知道。

(一):
第一个算法的思想的关键是i % j != 0这一句代码,i作为在1-100的所求得素数,j每次循环都要进行初始化,并且j的范围就是2-i,当满足i % j != 0这一句话时,j++,一直循环到*i % j == 0的时候,并判断i和j是否相同,相同的话就是素数,不相同i++继续判断。

package cn.yuan;
public class Demo {
    public static void main(String[] args) {
        int j;
        int sum = 0;
        for (int i = 2; i <= 100; i++) // 因为1不是素数,所以直接从2开始循环
        {
            j = 2;//每次都要对j初始化
            while (i % j != 0) {
                j++; // 测试2至i的数字是否能被i整除,如不能就自加
            }
            if (j == i) // 当有被整除的数字时,判断它是不是相同的数字,如果是的话就是素数,进行输出
            {
                sum += i;
                System.out.println(i); // 如果是就打印出数字
            }
        }
        System.out.println(sum);
    }
}

(二):
该算法思想的关键是i % n == 0这一句,跟上一个相反,首先要先把j定义为全局变量,将j和i放在了一个循环,该层循环就是遇到i%n!=0的时候,执行j++,当j加到比i小1的时候,再执行一次就会不满足j<i,并退出for循环,此时就会执行if判断i和j是否相等,相等的话就是素数。 当遇到i % j == 0的时候,就会执行break,退出结束for循环,可以直接认为他不是素数。

package cn.yuan;

public class Demo7 {
    public static void main(String[] args) {
        int j;
        int num = 0;
        for (int i = 2; i < 100; i++) {
            for (j = 2; j < i; j++) {/*该层循环就是遇到i%n!=0的时候,执行j++,当j加到比i小1的时候,再执行一次就会不满足j<i,退出for循环,此时在if语句判断i和j是否相等,相等的话就是素数。那遇到i % j == 0的时候,就会执行break,退出结束for循环,可以直接认为他不是素数。*/
                if (i % j == 0) {
                    System.out.printf("%d:非素数%n", i);
                    break;
                }
            }
            if (i == j) {
                num += i;
                System.out.println(i);
            }
        }
        System.out.println(num);
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值