Description
有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如:9的约数和有:1+3=44的约数和有:1+2=3所以9和4不是友好的。220的约数和有:1 2 4 5 10 11 20 22 44 55 110=284284的约数和有:1 2 4 71 142=220所以220和284是友好的。编写程序,判断两个数是否是友好数。
Input
一行,两个整数,由空格分隔
Output
如果是友好数,输出"yes",否则输出"no",注意不包含引号。
Sample Input 1
220 284
Sample Output 1
yes
Hint
HINT:时间限制:1.0s 内存限制:256.0MB两个整数都小于10000
任意一个数的约数都有1和它本身所以可以从2开始(定义所求和的初始值为1),那么从2开始只需要循环X/2次,每次判断是否可以被X除尽,若能被除尽则证明它为X的约数
代码
#include<stdio.h>
int Fnum(int n,int x)
{
int i,j;
int m,sum=1;
for(i=2;i<=x;i++)
{
if(n%i==0) //判断是否为n的约数
sum+=i;
}
return sum;
}
int main()
{
int n,m;
int x,y;
scanf("%d %d",&n,&m);
x=Fnum(n,n/2);
y=Fnum(m,m/2);
//printf("%d %d\n",x,y);
if(x==m&&y==n) printf("yes\n");
else printf("no\n");
return 0;
}
1696

被折叠的 条评论
为什么被折叠?



