练习三 控制结构(强化)编程题11. 牛友

【问题描述】

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值