蓝桥杯 算法提高 素数求和
程序员文章站
2022-05-31 20:16:42
...
问题描述
输入一个自然数n,求小于等于n的素数之和
样例输入
2
样例输出
2
数据规模和约定
测试样例保证 2 <= n <= 2,000,000
解题思路
很简单一个东西,使用一个循环,当前这个数如果为素数的话就将这个数加入到 和 里面
//问题描述
// 输入一个自然数n,求小于等于n的素数之和
// 样例输入
// 2
// 样例输出
// 2
// 数据规模和约定
// 测试样例保证 2 <= n <= 2,000,000
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int sum = 0;
for (int i = 2; i < n; i++) {
sum += judgePrime(i,n);
}
System.out.println(sum);
}
//判断num是不是素数
public static int judgePrime(int num, int n) {
//素数即只能被1和这个数本身整除的数,当其他任意一个数能整除这个数表示这个数不为素数
//我们只需要判断从1开始到这个数的平方根即可判断这个数是否为素数
//定义flag判断数字num是否为素数,如果flag为true表示num为素数,反之num则不为素数
boolean flag = false;
if (num == 2) {
return 2;
} else if (num == 3) {
return 3;
}
// double x = Math.sqrt(num);
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
flag = false;
break;
} else {
flag = true;
}
}
if (flag == true) {
return num;
} else {
return 0;
}
}
}
上一篇: C++继承
下一篇: tomcat 配置启动插件模板