C語言判別親密數


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

  


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM