12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- std::vector<int> factors(int n){
- int z = 2;
- std::vector<int> output;
- while (z * z <= n){
- if (n % z == 0){
- output.push_back(z);
- n /= z;
- }else{z++;}
- }
- if(n > 1){output.push_back(n);}
- return output;
- }
- bool cFuge(int n, int k) {
- int Sum = 0;
-
- if(1 == k || 1 == n){return false;}
- if(0 == k){return true;}
- if(n == k){return true;}
-
- if ((k%2 == 0) && (n%2 == 0)){return true;}
- std::vector<int> nfactors = factors(n);
-
- for(int i = 0;i<nfactors.size();i++){Sum += nfactors[i];}
- if(Sum == k){return true;}
- std::vector<int> kfactors = factors(k);
-
- for(int i = 0;i<nfactors.size();i++){
- for(int j = 0;j<kfactors.size();j++){
- if(nfactors[i] == kfactors[j]){return true;}
- }
- }
- return false;
- }
|