目錄
一、題目內容
二、輸入描述
三、輸出描述
四、輸入輸出示例
五、完整C語言代碼
一、題目內容
一個正整數?N?的因子中可能存在若干連續的數字。例如 630 可以分解為 3×5×6×7,其中 5、6、7 就是 3 個連續的數字。給定任一正整數?N,要求編寫程序求出最長連續因子的個數,并輸出最小的連續因子序列。
二、輸入描述
輸入在一行中給出一個正整數?N(1<N<2^31)。
三、輸出描述
首先在第 1 行輸出最長連續因子的個數;然后在第 2 行中按?
因子1*因子2*……*因子k
?的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1 不算在內。
四、輸入輸出示例
630
?3
5*6*7
?
五、完整C語言代碼
AC代碼~#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){long long int N;int count,a;int max = 0;int begin;scanf("%lld",&N);for(int i=2;i<=sqrt(N);i++){a = N;count = 0;int j = i;while(a % j == 0){a /= j;j++;count++;}if(count > max){max = count;begin = i;}}if(max){printf("%d\n",max);printf("%d",begin);for(int c=1;c<max;c++){printf("*");printf("%d",begin+c);}printf("\n");}else // N為質數的情況 printf("1\n%d",N);return 0;
}