L1-006. 连续因子
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输入在一行中给出一个正整数N(1<N<231)。
输出格式:
首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。
输入样例:630输出样例:
3
5*6*7
统计能取余(i++)的次数就是连续因子的个数
因子最少是1
#include <cstdio> #include <iostream> #include <cmath> using namespace std; int main() { int n; int a[10]; scanf("%d",&n); //int k=0; int sum; int st=0,cut=0,cut_now=0,st_now=0; for(int i=2;i<=sqrt(n);i++) { sum=1; st_now=i; cut_now=0; for(int j=i;n%j==0&&n%(sum*j)==0;j++) { sum=sum*j; cut_now++; } if(cut_now>cut) { cut=cut_now; st=st_now; } } if(cut==0) printf("1\n%d",n); else { cout<<cut<<endl; for(int i=st;i<st+cut;i++) { if(i<st+cut-1) printf("%d*",i); else printf("%d",i); } cout<<endl; } //printf("%d",maxn); }