码迷,mamicode.com
首页 > 编程语言 > 详细

C语言判别亲密数

时间:2020-05-08 11:27:45      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:csharp   family   class   ++   个数   NPU   lan   can   因子   

Description:

 从小到大输出两个正整数m和n(m≥6,n≤5000)之间的亲密数对。说明:若a和b为一对亲密数,则a的因子和等于b,b的因子和等于a,且a不等于b。例如,220与284是一对亲密数。一个数的因子,即能被它整除的数,包含1,不包含它本身。

 Input:

 m n

 Output:

 按照从小到大的次序每行输出一对亲密数

 Sample Input:

100 2000

Sample Output:
220 284
1184 1210
解题思路:
方法1、使用数组和循环把m,n之间的数的因子存起来,即a[i]+=j;然后再用两个循环加if判定亲密数。
方法2、先写出一个求因子的函数,然后再调用。
完整代码:
1、
#include <stdio.h>

void main()
{
 	int i,j,m,n,a[10000];
 	scanf("%d%d",&m,&n);
 	for(i=m;i<=n;i++)
 	{
 		a[i]=0;
 		for(j=1;j<=i/2;j++)
 		{
 			if(i%j==0)
 			  a[i]+=j;
		 }
	 }
	 for(i=m;i<=n;i++)
	 {
	 	for(j=i+1;j<=n;j++)
	 	{
	 		if(a[i]==j && a[j]==i)
	 		{
	 			printf("%d %d\n",i,j);
			 }
		 }
	 }
	 
} 

2、

#include <stdio.h>

int qinmi(int n)
{
	int i,sum=0;
	for(i=1;i<=n/2;i++)
	{
		if(n%i==0)
		  sum+=i;
	}
	return sum;
}
void main()
{
 	int m,n,a,b,t;
 	scanf("%d%d",&m,&n);
 	for(a=m;a<=n;a++)
 	{
 		b=qinmi(a);
 		t=qinmi(b);
 		if(b>a && a==t)
 		   printf("%d %d\n",a,b);
	 }
	 
} 

  


 

C语言判别亲密数

标签:csharp   family   class   ++   个数   NPU   lan   can   因子   

原文地址:https://www.cnblogs.com/Zhuohome/p/12849387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!