|
发表于 2023-8-20 12:37:03
|
显示全部楼层
搞了一下,性能卡在找质数的部分了。。。。。。。。。。。。
- #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;
- }
复制代码 |
|