查找间隔之间的好友号码

Find Friends Numbers between an Interval

本文关键字:好友 号码 之间 查找      更新时间:2024-09-28

我正在努力查找间隔之间的每一对朋友的号码。在110到210之间我得检查一下每种可能性(110210((111210((112210(。。。。。。

如果第一个数的除数之和等于第二个数,反之亦然,那么两个数就是朋友。

我不知道为什么,但输出没有,代码询问数字,但什么也没发生。预期的输出是在引入的间隔之间的每两个数字,碰巧是朋友。有人能帮我吗?

using namespace std;
int main(){
int suma = 0, suma1 = 0;

int n, m;
cout << "Number: n";
cin >> n;
cout << "Another number: n";
cin >> m;
for(int i = n; i<m; i++){
for(int j=i+1; j<=m; j++){
suma = 0;
suma1 = 0;
for(int z = 1; z <= i/2; z++){
if(i%z==0){
suma = suma + i;
}
}


for(int x = 1; x <= j/2; x++){
if(j%x==0){
suma1 = suma1 + x;
}
}
if(suma1==i && suma==j){
cout << n << " y " << m << " they are friends";

}
}
}

return 0; 
}

很有可能您的代码是正确的:最小的一对amical数字是220和284(所以低于210,您将找不到任何东西(。

除此之外,还有一些其他备注:
我建议您编写一个单独的函数来计算一个数字的除数之和,类似于:

int sum_of_divivors(int input){
int temp_sum = 0;
for(int x = 1; x <= input/2; x++){ // don't go up to the number itself, 
// the number itself should not be added 
// in this sum.
if(input%x==0){
temp_sum += x;
}
}
return temp_sum;
}

然后,进行一些调试:在屏幕上显示变量的演变(使用coutprintf()或其他(或使用调试器。

最后但同样重要的是,在代码中添加一些注释:为什么在for循环中从和到某些值,实现了什么。。。