暴力枚举
2025-04-20 14:16:23
发布于:江苏
1阅读
0回复
0点赞
分成两段去考虑,一个是求因数和,一个是判断。
因数和很简单,我给的范围是从2~开方a,把所有能整除的因子都加入总和sum,此外要注意如果有正好开方的数要单独判断,防止加了两次,最后要把漏掉的1(因为范围从2开始)给加上,这样因数和判断完了。
然后是判断,我给的范围是从3开始到1000,实际上跑了一遍也不到1000,第二个嵌套范围给的是从前一个范围+1开始,跑一遍就出来了。
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int izh(int a) {
int sum = 0;
for (int i = 2; i <= sqrt(a); i++) {
if (a % i == 0) {
if (a / i != i) {
sum += i;
sum += (a / i);
} else
sum += i;
}
}
return sum + 1;
}
int main() {
for (int i = 3; i < 1000; i++) {
for (int j = i + 1; j < 1000; j++) {
if (izh(i) == j && izh(j) == i) {
cout << i << ' ' << j;
return 0;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个