【问题描述】
Bessie和其他的所有奶牛的耳朵上都戴有一个射频识别(RFID,不能使用英文缩略词)序列号码牌。因此FJ可以机
械化地计算他们的数量。很多奶牛有一个“牛友”:一只奶牛的牛友的序列号刚好等于奶牛自己的序列号的所有约
数之和。在这里,一个数的“约数”不包括这个数本身。因为一些奶牛的号码约数和大于其他任何奶牛的号码,所
以这些奶牛没有牛友。一些奶牛有一个“非常好友”。当两个奶牛互为“牛友”时,他们就是一对“非常好友”。
注意在这道题中,忽略那些自己是自己的“非常好友”的情况。给定一个序列号S (6 <= S <= 18,000),找到序列
号不小于S的第一只有“非常好友”的奶牛。比如说,考虑序列号220,它的约数是1, 2, 4, 5, 10, 11, 20, 22,
44, 55, 和110。和是284。类似的,284的约数是1, 2, 4, 71, 和142。他们的和是220
【输入形式】
第1行: 一个单独的整数: S
【输出形式】
第1行: 单独一行,包含2个由空格隔开的整数。第一个整数表示第一个序列号不小于S的有非常好友的奶牛,第
二个整数是他的好友的序列号。
【样例输入】
206
【样例输出】
220 284
#include <iostream>
using namespace std;
int sum(int n){ //写一个求约数和的函数
int total=0;
for (int i=1;i<=n/2;i++){
if (n%i==0){
total+=i;
}
}
return total;
}
int main(){
int s;
cin>>s;
for (int cow=s; ;cow++){ //从输入的牛后开始进行循环
int friend1=sum(cow); //看它的第一个朋友的约数
if (friend1!=cow&&sum(friend1)==cow){ //如果约数不是它本身且朋友的约数是它则输出
cout<<cow<<" "<<friend1;
break;
}
}
return 0;
}