#从中间开始找的话就是保证两个数差距最小,然后再分别判断两个数是不是质数,就可以了 import math def isPrime(num): for i in range(2,int(math.sqrt(num))+1): if num%i==0: return False return True while True: try: n=int(input()) a=int(n/2) while a<n-2: b=n-a if isPrime(a) and isPrime(b): print(b) print(a) break a+=1 except: break
#include <iostream> #include <cmath> using namespace std; bool isPrime(int num){ for(int i=2;i<=sqrt(num*1.0);i++){ if(num%i==0) return false; } return true; } int main(){ int n; int res1,res2; while(cin >> n){ if(n<2) return 1; else{ for(int i=1;i<=n/2;i++){ if(isPrime(i) && isPrime(n-i)) { res1=i; res2=n-i;//两个数还不能交换,必须这样输出 } } cout << res1 << endl; cout << res2 << endl; } } return 0; }