搞了一下,性能卡在找质数的部分了。。。。。。。。。。。。 #include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main(void){
long long num;
long long i, j, k, location;
vector<long long> arr;
cout << "请输入一个偶数 N(12 <= N <= 10^18):";
cin >> num;
// num = 8000000;
cout << num << endl;
for(i = 2; i < num; i++){
k = (long long)sqrt(i);
for(j = 2; j <= k; j++){
if(i % j == 0){
break;
}
}
if(k + 1 == j){
arr.push_back(i);
}
}
cout << "共找到" << arr.size() << "个质数" << endl;
// for(i = 0; i < arr.size(); i++){
// cout << arr[i] << " ";
// }
for(i = 0; i < arr.size(); i++){
location = arr.size() / 2;
for(j = 0; j < arr.size(); j++){
for(k = location; k >= 0; k--){
if(num - arr[i] == arr[j] * arr[k]){
cout << endl << "找到结果:" << num << " = " << arr[i] << " + " << arr[j] << " * " << arr[k] << endl;
return 0;
}
if(num - arr[i] > arr[j] * arr[k]){
location = k;
break;
}
}
}
}
cout << "没有找到合适的结果";
return 0;
}
|