PTA天梯賽練習集 L1-006 連續因子 (20 分)
阿新 • • 發佈:2018-12-18
一個正整數 N 的因子中可能存在若干連續的數字。例如 630 可以分解為 3×5×6×7,其中 5、6、7 就是 3 個連續的數字。給定任一正整數 N,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。
輸入格式:
輸入在一行中給出一個正整數 N(1<N<2^31)。
輸出格式:
首先在第 1 行輸出最長連續因子的個數;然後在第 2 行中按 因子1因子2……*因子k 的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1 不算在內。
輸入樣例:
630
輸出樣例:
3 567
解題思路:
在區間內先利用迴圈判斷該數是不是完數,如果是完數,則輸出,並標記t=0,如果區間內沒有完數即t=1,輸出None。
事例程式碼:
#include<stdio.h>
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;
}
}