Java实现求某个数以内的所有质数

最近笔试遇到好多次让求素数的问题,今天在这里总结一下:

/**************************************第一种************************************/
public static List<Integer> find(int n){
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 2; i <= n; i++) {
			boolean flag = true;
			for (int j = 2; j <i; j++) {
				if (i % j == 0) {
					flag = false;
				}
			}
			if (flag) {
				list.add(i);
			}
		}
		return list;
	}
/**************************************第二种(效率稍微好一点)************************************/
public static List<Integer> find(int n){
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 2; i <= n; i++) {
		//去除偶数部分
			if (i % 2 == 0 && i != 2) {
				continue;
			}
			boolean flag = true;
			for (int j = 2; j <= i/2; j++) {
				if (i % j == 0) {
					flag = false;
				}
			}
			if (flag) {
				list.add(i);
			}
		}
		return list;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,以下是100以内的素列表: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97。 ### 回答2: Java是一种很强大的编程语言,可以用来解决各种问题,包括解素。素是只能被1和自身整除的,比如2、3、5、7等。为了解100以内的素,我们可以使用循环和判断语句来逐个判断每个是否为素。 首先,我们可以使用两个循环嵌套,外层循环控制字从2到100的遍历,内层循环从2开始检查每个字是不是素。在内层循环中,我们使用取模运算符(%)来判断每个字是否能被除1和自身以外的任何整除。 具体的Java代码如下: ```java public class PrimeNumbers { public static void main(String[] args) { System.out.println("100以内的素:"); for (int i = 2; i <= 100; i++) { boolean isPrime = true; for (int j = 2; j < i; j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { System.out.print(i + " "); } } } } ``` 上述代码中,我们使用一个布尔变量isPrime来判断当前字是否为素。如果在内层循环中找到了一个能整除当前字的,就将isPrime设置为false,并立即跳出内层循环。如果在内层循环结束后isPrime仍然为true,则说明当前字是素,将其输出。 运行上述代码,控制台将会输出100以内的素:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97。 ### 回答3: 100以内的素可以通过筛选法来实现。先定义一个大小为100的布尔组,用来表示字是否为素。初始时,将所有字都标记为素。然后从2开始遍历到100,如果某个字是素,则将它的倍都标记为非素。具体步骤如下: 1. 创建一个长度为101的布尔组`isPrime`,并将所有元素初始化为`true`。组下标表示字,布尔值表示是否为素。 2. 从2开始遍历到100,对于每个字: - 如果`isPrime[i]`为`true`,则将`i`的倍从`i*2`开始,递增`i`,标记为非素。具体代码为: ```java for (int j = i * 2; j <= 100; j += i) { isPrime[j] = false; } ``` 3. 遍历完毕后,`isPrime[i]`为`true`的字`i`即为100以内的素。 最后将找到的素打印出来即可。完整代码如下: ```java public class PrimeNumbers { public static void main(String[] args) { boolean[] isPrime = new boolean[101]; for (int i = 2; i <= 100; i++) { isPrime[i] = true; } for (int i = 2; i <= 100; i++) { if (isPrime[i]) { for (int j = i * 2; j <= 100; j += i) { isPrime[j] = false; } } } System.out.println("100以内的素有:"); for (int i = 2; i <= 100; i++) { if (isPrime[i]) { System.out.print(i + " "); } } } } ``` 运行结果如下: ``` 100以内的素有: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ``` 通过筛选法,我们可以得100以内的所有素

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值