[PTA] 7-45のfindエンド数(20分)

着信番号の番号の後に自身以外の要素の和に正確に等しいです。例えば:6 = 1 + 2 + 3、ここで、1、2、6倍。この問題は、任意の2つの完全な正の整数であり、n Mとのすべての番号を見つけるためにプログラミングする必要があります。

入力フォーマット:
入力ギブ2つの正の整数列にm及びn(1 <m≤n≤10000)は、スペースで区切ら。

出力フォーマット:
各因子のプログレッシブ数は、蓄積された因数分解形であって、前記一列の数を表す各完全数、および「エンド因子の数=係数1 + 2 + ... + K因子」の形式の所定の範囲を完了するために出力しました昇順と因子分析によるものです。あなたは、出力「なし」の範囲内でそれらをカウントしていない場合。

サンプル入力:
230

出力サンプル:
6 1 + 2 + 3 =
28 = 1 + 2 + 4 + 7 + 14

#include<stdio.h>
int main()
{
	int n,m,i,j,sum,flag=0;//
	scanf("%d %d",&n,&m);
	for(i=n;i<=m;i++)
	{
		sum=1;
		if(i==1) continue;	//1不是完数 
		for(j=2;j<i;j++)
		{
			if(i%j==0)
			{
				 sum=sum+j;
			} 
		}
		if(sum==i)
		{
			printf("%d = 1",sum);
			for(j=2;j<i;j++)
			{
				if(i%j==0)
				{
					printf(" + %d",j);
				}
			}
			printf("\n");
			flag=1;
		}
	}
	if(flag==0) 
	printf("None");
	return 0;
}

知識ポイント:フラグの使用

公開された48元の記事 ウォンの賞賛0 ビュー298

おすすめ

転載: blog.csdn.net/weixin_46399138/article/details/105423685