计算素数的个数
程序员文章站
2024-03-15 10:52:53
...
素数的个数
暴力算法和埃筛法
暴力算法的核心是将每个值都遍历的计算一次
埃筛法的核心是标记每个已经计算出的素数可以确定的非素数
import java.util.Scanner;
/**
* @Author: Jiansheng
* @DateTime: 2021/5/30 19:38
* @Description: 素数个数的查找
*/
public class Demo002_PrtmeNumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入要确认的数值:");
int nextInt = input.nextInt();
//暴力算法
int count1 = getCount(nextInt);
System.out.println("暴力算法素数的个数为:"+count1);
//埃筛法
int count2 = getCount2(nextInt);
System.out.println("埃筛法素数的个数为:"+count2);
}
//暴力算法的方法
public static int getCount(int x){
int count = 0;
boolean flag = false;
for (int i=2;i<x;i++){
for (int j = 2;j< i;j++){
if (i % j ==0 ){
flag = true;
break;
}
}
if (!flag){
count++;
}
flag = false;
}
return count;
}
//埃筛法的方法
public static int getCount2(int x){
int count = 0;
boolean[] flag = new boolean[x];//因为布尔型默认为false,所以我们规定false为素数
for (int i=2;i<x;i++){
if (!flag[i]){
count++;
for (int j = 2*i;j<x;j+=i){
flag[j]=true;
}
}
}
return count;
}
}
Jiansheng
上一篇: vue2.0父子组件间通信
下一篇: 使用函数计算素数的个数并求和