输入一个大于等于4的偶数n,可以分解成两个质数的和。使得两个质数的差尽量小。
输入:输入大于等于4的偶数
输出:输出两个质数,用空格分开
#include <iostream>
using namespace std;
const int Max = 100;
int check[Max] = { 0 };
int prime[Max] = { 0 };
void isPrime() {
for (int i = 2; i <= Max; i++) {
if (!check[i]) {
prime[++prime[0]] = i;
}
for (int j = 1; j <= prime[0] && i * prime[j] <= Max; j++) {
check[i * prime[j]] = 1;
if (i % prime[j] == 0) {
break;
}
}
}
}
int main(int argc, const char* argv[]) {
isPrime();
int n;
cout << "请输入一个大于等于4的偶数n:" << endl;
cin >> n;
for (int i = n / 2; i > 0; i--) {
if (check[i] == 0 && check[n - i] == 0) {
cout << i << " " << n - i << endl;
break;
}
}
return 0;
}
链接:https://blog.csdn.net/yi_tong_/article/details/120373124
供参考:
#include <stdio.h>
int isPrime(int n)
{
int i;
if (n <= 3) return n > 1;
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int main()
{
int i, n;
while (scanf("%d", &n) == 1 && n > 0) // 输入 <= 0 结束
{
if (n % 2 != 0) continue; //输入非偶数,重新输入
for (i = n / 2; i > 1; i--) {
if (isPrime(i) && isPrime(n - i))
{
printf("%-d=%-d+%-d\n", n, i, n - i);//输出
break;
}
}
}
return 0;
}