Java求素数(两种方法)

//判断101—200间有多少个素数(素数除了1和本身没有其他除数)

1.直接除以 2 到 本身减一 

//判断101—200间有多少个素数(素数除了1和本身没有其他除数)
public class Demo {
    public static void main(String[] args) {
        //1.思路,让101除以2-100,让102除以2-101,...看取余是否为零
        //left表示余数为零的个数,num记录有几个素数
        int left = 0, num = 0;
        for (int i = 101; i <= 200; i++) {
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    left++;
                }
            }
            //余数left==0则表示从2到 本身-1 没有一个能除尽,则此数为质数
            if (left == 0) {
                System.out.print(i + ",");
                num++;
            }
            //第一次循环结束此时left要归零,进而继续进行循环
            left = 0;
        }
        System.out.println();
        System.out.print("共有" + num + "个素数");
    }
}

2,如果一个数的约数在其开平方的右边 则必然会存在一个约数在其开平方的左边 所以判断一个数是否为质数 只需要观察在 2 到 开平方数 中间是否含有约数即可

用了Math方法

//判断101—200间有多少个素数(素数除了1和本身没有其他除数)
//如果一个数的约数在其开平方的右边 则必然会存在一个约数在其开平方的左边 所以判断一个数是否为质数 只需要观察在 2 到 开平方数 中间是否含有约数即可
public class Demo {
    public static void main(String[] args) {
        //用平方根来减少代码运行时间,及101除以2,101除以3...到101除以【101平方根】,后续同理
        //left表示余数为零的个数,num记录有几个素数
        int left = 0, num = 0;
        //注意循环变量是整数,所以开平方后要强制转换。
        for (int i = 101; i <= 200; i++) {
            for (int j = 2; j <= (int) Math.sqrt(i); j++) {
                if (i % j == 0) {
                    left++;
                }
            }
            //余数left==0则表示从2到平方根没有一个能除尽,则此数为质数
            if (left == 0) {
                System.out.print(i + ",");
                num++;
            }
            //第一次循环结束此时left要归零来表示余数为零个数
            left = 0;
        }
        System.out.println();
        System.out.print("共有" + num + "个素数");
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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以内的所有素数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值