Java素数求和(1~100)

本文介绍了使用Java实现1到100之间素数求和的三种方法,包括利用Math.sqrt()函数优化循环次数的方法、通过比较j与(i/j)进行判断的方法以及采用while循环而非for循环的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java素数求和(1~100)

java素数求和三种方法
一、

public class Sushu {
	public static void main(String[] args) {
		int sum = 0;
		int k = 0;
		for (int i = 2; i <= 10; i++) {
			for (int j = 2; j <= Math.sqrt(i); j++) {
				k = 0;
				if (i % j == 0) {
					k = 1;//如果不为素数就赋值为1,否则初始为0
					break;//不为素数就结束里面这层for循环
				}
			}
			if (k == 0)//得出素数,这里可以对素数打印、求和
				sum += i;
		}
		System.out.println(sum);
	}
}

下面是简单思路
采用了Math.sqrt(i)(判断条件要有等号),java求平方根方法,优化了复杂度,相比与i优化了算法;通过引用k,经过判断当该数为素数时k=0,否则为1;最后将k=0时的数加起来,就是所求素数的和。

说明:我们都知道第一个素数是2,所以就从2开始算,知道了范围就把i定义在某个区间就可以。

二、

public class Sushu {
	public static void main(String[] args) {
	    int sum = 0;
		for(int i=2;i<100;i++) {
			int j;//声明j使j的作用域为外层for
			for(j=2;j<=(i/j);j++) {
				if(i%j==0)
					break;
			}
			if(j>(i/j)) {
			    sum+=i;
				//System.out.println(i);//这里原本是用于打印出素数的
			}	
		}
		System.out.println(sum);
	}
}

下面是简单思路
利用的是j与(i/j)的比较进行判断,复杂度这种方法比第一种复杂一点,因为每次循环都有重新计算(i/j),不过这一点复杂读没有任何的影响哈,优点是没有调用Math.sqrt()函数。

三、

public class Sushu {
	public static void main(String[] args) {
	    int sum = 0;
	    int i = 2;
	    while(i<100) {
	    	int j = 2;
	    	while(j<=(i/j)) {
				if(i%j==0) break;
				j++;
			}
			if(j>(i/j)) {
				sum+=i;
				//System.out.println(i);//这里原本也是打印素数的
			}
			i++;
	    }
		System.out.println(sum);
	}
}

第三种方法和第一种一样,不同的是没有用for循环而是用while循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值