java最基本的一种求素数

public class NumberUtil {
    
    public void isPrime(int number){
        int i = 0;
        int j = 0;
        for(i=3;i<=number;i++){//外层循环:负责找到i到number之间的每一个数
            for(j=2;j<i;j++){//内层循环:判断"这个数"是否为素数
                if(i % j == 0){//如果有"一个数"可以被"这个数"整除,则跳出内层循环
                    break;//跳出这个循环,执行下面语句
                }
            }
            if(j==i){//如果"这个数"就是本身,则为素数
                System.out.println(i+"是素数");
            }
        }
    }
}

//测试类
public class NumberUtilTest {
    public static void main(String[] args){
        NumberUtil n = new NumberUtil();
       
        n.isPrime(50);
    }
}

就是利用双层循环,外层循环控制所查范围之间遍历每个数,内层循环判断这个数是否为素数,如果 i 跟 j 能整除,则跳出内层循环,基于素数标准只能被1和它本身整除,j跟i判断相等,相等则为素数,大致就是先判断能否整除,如果能整除判断是否可以是它本身,如果是它本身则是素数,否则接着回到外层循环。

本人也才刚学java,自己的思路也是比较乱,原来用C做过这个,结果换了个语言,又开始迷糊了,请见谅,记录一下自己的java之路。

以下是几种使用 Java 语言一百以内全部素数的代码实现: #### 方法一 ```java public class PrimeNumbers { public static void main(String[] args) { for (int number = 2; number <= 99; number++) { if (isPrime(number)) { System.out.print(number + " "); } } } public static boolean isPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { return false; } } return true; } } ``` 该方法通过遍历 2 到 99 之间的所有数,并对每个数检查它是否是素数来实现。一个数是素数,如果它只能被 1 和它本身整除。利用`isPrime`方法判断一个数是否为素数,对于小于 2 的数直接返回`false`,对于其他数检查从 2 到该数平方根之间的数是否能整除它,若能则不是素数,反之则是素数[^1]。 #### 方法二 ```java public class Main { public static void main(String args[]){ int i,j; for(i=2;i<=100;i++){ for(j=2;j<=i/2;j++){ if(i%j==0){ break; } } if(j>i/2){ System.out.println(i+"是素数!"); } } } } ``` 此方法使用双层`for`循环,外层循环遍历 2 到 100 的数,内层循环从 2 开始到当前数的一半进行检查,若能整除则跳出内层循环。若内层循环结束时`j`大于当前数的一半,则说明该数是素数并输出[^2]。 #### 方法三 ```java package java_2022_9_11; public class java_2022_9_11_prime_sum { public static void main(String agrs[]) { int i,m,j,n=0; int a[]=new int[100]; for (i=1;i<=100;i++) { if(i==2) { a[n++]=i; } for(j=2;j<i;j++) { if(i%j==0) { break; } else if(i-1==j) { a[n]=i; n++; } } } for (i=0;i<n;i++) { System.out.print("_"+a[i]); } } } ``` 该方法同样通过双层`for`循环遍历 1 到 100 的数,将素数存储在数组`a`中,后输出数组中的素数。对于 2 直接存入数组,对于其他数,检查从 2 到该数减 1 之间的数是否能整除它,若都不能整除则说明是素数并存入数组[^3]。 #### 方法四 ```java package Lq_project; public class Sushu { public static void main(String[] args) { printNum(100); } private static void printNum(int num){ boolean isPrint=true; for(int i=3;i<num;i=i+2){ for(int j=2;j<=(int)Math.sqrt(i);j++){ if(i%j==0){ isPrint=false; break; } else { isPrint=true; } } if(isPrint) { System.out.println(i); } } } } ``` 此方法定义了`printNum`方法,使用`boolean`类型变量`isPrint`来判断是否为素数。外层循环从 3 开始,每次增加 2 遍历奇数,内层循环从 2 到当前数的平方根进行检查,若能整除则将`isPrint`置为`false`并跳出内层循环,若内层循环结束时`isPrint`为`true`则说明该数是素数并输出[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值