查找间隔之间的好友号码
Find Friends Numbers between an Interval
我正在努力查找间隔之间的每一对朋友的号码。在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;
}
然后,进行一些调试:在屏幕上显示变量的演变(使用cout
、printf()
或其他(或使用调试器。
最后但同样重要的是,在代码中添加一些注释:为什么在for循环中从和到某些值,实现了什么。。。
相关文章:
- 有没有可能有一个只有ADL才能找到的非好友功能
- 为什么我的好友类无法访问私人会员?
- 程序不断发送垃圾邮件号码?
- 为什么派生类的好友不能使用受保护的成员?
- 解析模板的好友功能时出现问题
- 消除好友和成员二进制运算符的歧义
- 特定好友功能专业化
- 好友函数的工作原理
- 在C++中使用线程查找友好号码比单个线程花费更多时间
- 插入号码后C++崩溃
- C++ 电话号码字母拨号程序 - 语法错别字?还是非 ASCII 字符?
- C++11 中好友模板类的视觉C++错误
- 好友功能 - 成员无法访问
- 将好友从模板导出到全局命名空间
- 如何使模板化类成为另一个模板化类的好友
- 类模板的好友声明
- 好友库函数可以访问子数据
- 无法从好友功能访问类的私有成员?"ostream"不是"std"的成员?
- MSVC 2017 - 错误 - 如何将模板类 X 的模板成员函数声明为嵌套类 X::Y 的好友
- 为什么转发声明的好友类不能在类中引用?