时间限制:1秒
空间限制:32768K
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
输出描述:
输出对数
输入例子1:
10
输出例子1:
2
import java.util.Scanner; public class Test7 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int count = 0; for(int i=2;i<=n/2;i++){ if(IsPrime(i) && IsPrime(n-i)) count++; } System.out.println(count); } public static boolean IsPrime(int num) { if (num <= 1) return false; if (num == 2) return true; boolean flag = false; for (int i = 2; i <= Math.sqrt(num); i++) { if(num % i == 0){ flag = true; break; } } if(flag){ return false; }else{ return true; } } }
#include<iostream> using namespace std; int is_prime_number(int); int main(int argc, char const *argv[]) { int num; int num_first[1000]; int num_second[1000]; int count = 0; int flag = 0; while (cin >> num) { for (int i = 2; i < num; ++i) { for (int j = 2; j < num; ++j) { if (num == i + j) { if (is_prime_number(i) && is_prime_number(j)) { num_first[count] = i; num_second[count] = j; count++; flag = 1; } } } } if (flag == 1) { cout << (count + 1) / 2 << endl; } for (int i = 0; i < count; ++i) { printf("(%d,%d)\n", num_first[i], num_second[i]);//输出质数组 } } return 0; } int is_prime_number(int num) { int n; for (n = 2; n <= num / 2; n++) { if (num % n == 0){ return 0; } } return 1; }