PTA天梯赛练习集 L1-006 连续因子 (20 分)

一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

输入格式:

输入在一行中给出一个正整数 N(1

输出格式:

首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。

输入样例:

630

输出样例:

3
567

解题思路:

在区间内先利用循环判断该数是不是完数,如果是完数,则输出,并标记t=0,如果区间内没有完数即t=1,输出None。

事例代码:

#include
int main() 
{
	int i,j,m,n,k;
	int t=1;
	scanf("%d%d",&m,&n);
	if(1<=m<=n<=10000)
	{
		for(i=m;i<=n;i++)
		{
			int sum=0;//初始化sum的值 
			for(j=1;j<i;j++)
			{
				if(i%j==0)
				{
					sum+=j;
				}
			}
			if(sum==i)
			{
				t=0;//标记该数为完数;
				printf("%d = 1",sum) ;
			
				for(k=2;k<sum;k++)
				{
					if(sum%k==0)
					{
						printf(" + ");
						printf("%d",k);
					}		
				}
				printf("\n");//判断一个数为完数以后换行一次; 
			}		
		}		
	}	
	if(t==1) 
	{
		printf("None");//如果区间内没有完数,输出None;
	}
 } 


你可能感兴趣的:(PTA天梯赛练习集)