找完數


所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程序,找出任意兩正整數mn之間的所有完數。

輸入格式:

輸入在一行中給出2個正整數mn(1<mn≤10000),中間以空格分隔。

輸出格式:

逐行輸出給定范圍內每個完數的因子累加形式的分解式,每個完數占一行,格式為“完數 = 因子1 + 因子2 + ... + 因子k”,其中完數和因子均按遞增順序給出。若區間內沒有完數,則輸出“None”。

輸入樣例:

2 30



結尾無空行

輸出樣例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14結尾無空行

answer

#include<stdio.h>
int main()
{
	int m,n,i,j,cnt = 0;
	scanf("%d %d",&m,&n);//輸入兩個數
	for(i=m;i<=n;i++){
		int sum = 0;
		for(j=1;j<i;j++)
		{
			if(i % j == 0){
				sum += j;
			}
		}
		if(sum == i){//是否是完數
			printf("%d = 1",i);
			for(int k=2;k<i;k++)
			{
				if(i % k == 0){
					printf(" + %d",k);
				}
			}
			printf("\n");
			cnt++;//完數個數 
		}
		
	}
	if(cnt == 0){
		printf("None\n");
	}
	return 0;
}


免責聲明!

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



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