向量中友好对的数量
Number of friendly pairs in vector
我正在尝试编写一个函数,它接受一个整数向量作为参数,returns 可以在该向量中找到的友好对数。该函数不得使用任何其他辅助函数。
如果一个数的所有除数之和(不包括它本身)等于另一个数,则一对数是友好数,反之亦然。
#include <iostream>
#include <vector>
int Number_Of_Friendly_Pairs(std::vector<int>a) {
std::vector<int>b;
for (int i = 0; i < a.size(); i++) {
int sum_of_divisors = 0;
for (int j = 1; j < a[i]; j++)
if (a[i] % j == 0)
sum_of_divisors += j;
b.push_back(sum_of_divisors);
}
int number = 0;
for (int i = 0; i < a.size(); i++)
for (int j = i + 1; j < b.size(); j++)
if (a[i] == b[j])
number++;
return number;
}
int main()
{
std::vector<int>b{220, 1184, 284, 1210, 2620, 2924};
std::cout << Number_Of_Friendly_Pairs(b);
return 0;
}
我的代码完全准确吗?对于向量 {220, 1184, 284, 1210, 2620, 2924} 它给出了正确的输出(即 3)。但是,我不确定它是否会为每种情况提供正确的输出。
A pair of numbers is friendly if the sum of all divisors of one number (not counting itself) is equal to another number and vice versa.
但是,代码只测试一些除数之和等于某个数字。反之亦然的部分非常缺失。例如,代码在 {7, 8}
.
中声明一对友好
您需要测试 (a[i] == b[j]) && (b[i] == a[j])
。
我正在尝试编写一个函数,它接受一个整数向量作为参数,returns 可以在该向量中找到的友好对数。该函数不得使用任何其他辅助函数。
如果一个数的所有除数之和(不包括它本身)等于另一个数,则一对数是友好数,反之亦然。
#include <iostream>
#include <vector>
int Number_Of_Friendly_Pairs(std::vector<int>a) {
std::vector<int>b;
for (int i = 0; i < a.size(); i++) {
int sum_of_divisors = 0;
for (int j = 1; j < a[i]; j++)
if (a[i] % j == 0)
sum_of_divisors += j;
b.push_back(sum_of_divisors);
}
int number = 0;
for (int i = 0; i < a.size(); i++)
for (int j = i + 1; j < b.size(); j++)
if (a[i] == b[j])
number++;
return number;
}
int main()
{
std::vector<int>b{220, 1184, 284, 1210, 2620, 2924};
std::cout << Number_Of_Friendly_Pairs(b);
return 0;
}
我的代码完全准确吗?对于向量 {220, 1184, 284, 1210, 2620, 2924} 它给出了正确的输出(即 3)。但是,我不确定它是否会为每种情况提供正确的输出。
A pair of numbers is friendly if the sum of all divisors of one number (not counting itself) is equal to another number and vice versa.
但是,代码只测试一些除数之和等于某个数字。反之亦然的部分非常缺失。例如,代码在 {7, 8}
.
您需要测试 (a[i] == b[j]) && (b[i] == a[j])
。