3
yes
直接利用定义,从2到n-1每个都试除一下即可
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();boolean result = is_prime(n);if (result == true){System.out.println("yes");}else {System.out.println("no");}}//判断质数//质数定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数public static boolean is_prime(int n){if (n < 2){return false;}for (int i = 2; i < n; i++) {if (n % i == 0){return false;}}return true;}
}
被除数的两个约数总是对应存在的
因此我们所枚举的约数只需要到n/d就好了,大大降低了时间复杂度,降到了O(√n)
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();boolean result = is_prime(n);if (result == true){System.out.println("yes");}else {System.out.println("no");}}//判断质数//质数定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数public static boolean is_prime(int n){if (n < 2){return false;}for (int i = 2; i <= n/i; i++) {if (n % i == 0){return false;}}return true;}
}
10
2 3 5 7
4
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;if (n <= 2){System.out.println(0);}else {for (int i = 2; i < n; i++) {if (is_prime(i)){System.out.print(i+" ");count++;}}System.out.println();System.out.print(count);}}//判断质数//质数定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数public static boolean is_prime(int n){if (n < 2){return false;}for (int i = 2; i <= n/i; i++) {if (n % i == 0){return false;}}return true;}
}
10
4
2 3 5 7
import java.util.ArrayList;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;ArrayList l = new ArrayList<>();if (n <= 2){System.out.println(0);}else {for (int i = 2; i < n; i++) {if (is_prime(i)){l.add(i);count++;}}System.out.println(count);for (int i = 0; i < l.size(); i++) {System.out.print(l.get(i)+" ");}}}//判断质数//质数定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数public static boolean is_prime(int n){if (n < 2){return false;}for (int i = 2; i <= n/i; i++) {if (n % i == 0){return false;}}return true;}
}
1
2
4
0
0
2
5
import java.util.ArrayList;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);ArrayList a = new ArrayList();while (true){int n = sc.nextInt();if (n != 0){int sum = 0;if (n <= 1){a.add(0);continue;}else {for (int i = 2; i <= n; i++) {if (is_prime(i)) {sum += i;}}a.add(sum);continue;}}for (int i = 0; i < a.size(); i++) {System.out.println(a.get(i));}}}//判断质数//质数定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者叫素数public static boolean is_prime(int n){if (n < 2){return false;}for (int i = 2; i <= n/i; i++) {if (n % i == 0){return false;}}return true;}
}