问题描述
完成一个程序,该程序计算n以内(包含n)的所有素数之和并返回。注意,提交完整的程序代码。
输入格式
输入一个整数 n;
输出格式
输出n以前所有素数的和。
样例输入
5
样例输出
10
思路:写一个boolean的方法判断是否是素数,直接在主方法调用+=即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int ans=0;
for (int i = 2; i <= n; i++) {
if (prime(i)) {
ans+=i; // 是素数就+=
}
}
System.out.println(ans); // 得出结果
}
public static boolean prime(int n) { // 判断是否是素数
for (int i = 2; i < n; i++) {
if (n%i==0) {
return false;
}
}
return true;
}
}
思路:直接搞两层枚举,返回假就退出循环,如果是真,直接+=即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int ans = 0;
for (int i = 2; i <= n; i++) {
boolean m = true; // 如果是素数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) { // 为0
m = false; // 返回假
break; // 退出循环
}
}
if (m) {
ans += i; // 结果
}
}
System.out.println(ans); // 输出
}
}