【问题描述】
编程将 6~100 内的所有偶数表示成两个素数之和。
输出内容如下:
6=3+3 8=3+5 10=3+7 12=5+7 14=3+11
16=3+13 18=5+13 20=3+17 22=3+19 24=5+19
26=3+23 28=5+23 30=7+23 32=3+29 34=3+31
36=5+31 38=7+31 40=3+37 42=5+37 44=3+41
46=3+43 48=5+43 50=3+47 52=5+47 54=7+47
56=3+53 58=5+53 60=7+53 62=3+59 64=3+61
66=5+61 68=7+61 70=3+67 72=5+67 74=3+71
76=3+73 78=5+73 80=7+73 82=3+79 84=5+79
86=3+83 88=5+83 90=7+83 92=3+89 94=5+89
96=7+89 98=19+79 100=3+97
【C语言代码】
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
bool isPrime(int n) {
if(n<2) return false;
for(int i=2; i<=sqrt(n); i++) {
if(n%i==0) return false;
}
return true;
}
int main() {
int cnt=0;
int i,j;
for(i=6; i<=100; i=i+2) {
for(j=2; j<i; j++) {
if(isPrime(j) && isPrime(i-j)) {
printf("%5d=%d+%d\t",i,j,i-j);
cnt++;
break;
}
}
if(cnt%5==0) printf("\n");
}
return 0;
}
【C++代码】
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if(n<2) return false;
for(int i=2; i<=sqrt(n); i++) {
if(n%i==0) return false;
}
return true;
}
int main() {
int cnt=0;
for(int i=6; i<=100; i=i+2) {
for(int j=2; j<i; j++) {
if(isPrime(j) && isPrime(i-j)) {
printf("%5d=%d+%d\t",i,j,i-j);
cnt++;
break;
}
}
if(cnt%5==0) printf("\n");
}
return 0;
}