PAT L1-006 连续因子
2017-02-22 14:15
344 查看
L1-006. 连续因子
一个正整数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
4位int的范围为-2147483648~2147483648(2的31次方)。
寻找最大连续因子个数最大长度为12,12!=479001600而13!=6227020800。
最长的连续因子个数从某个数的2~sqrt(n)+1为止进行遍历,找到结果,素数直接输出。
#include<iostream> #include<math.h> #include<algorithm> #include<string.h> #include<stdlib.h> #include<stdio.h> using namespace std; int prime(int n) { if(n==1||n==0)return 0; for(int i=2; i<=sqrt(n); i++) if(n%i==0)return 0; return 1; } int main() { int y; int len,start,en; bool flag=false; cin>>y; for(len=12; len>=1; len--) //依次遍历各个长度 { for(start=2; start<=sqrt(y); start++) //对每一个长度进行测试,看是否有连续该长度的因子序列 { long long ans=1; for(int k=start; k<=start+len-1; k++) ans*=k; if(y%ans==0) { flag=true; break; } } if(flag)break; } if(flag) { int i; cout<<len<<endl; for(i=start; i<=len+start-2; i++) cout<<i<<"*"; cout<<i<<endl; } return 0; }
参考博客
相关文章推荐
- PAT-L1-006. 连续因子
- PAT-团体程序设计天梯赛-练习集-L1-006. 连续因子
- PAT L1——006. 连续因子
- PAT团体程序设计天梯赛 L1-006. 连续因子
- pat L1-006. 连续因子
- C++ - PAT - L1-006. 连续因子
- PAT L1 006 连续因子
- PAT L1-006 连续因子
- PAT 天梯赛 L1-006. 连续因子 【循环】
- PAT L1-006. 连续因子
- (PAT)L1-006 . 连续因子
- PAT-L1-006. 连续因子(思维)
- PAT-CCCC练习:L1-006.连续因子
- L1-006. 连续因子 - PAT
- PAT-天梯赛练习集-L1-006-连续因子
- pat L1-006. 连续因子
- PAT练习集之20分题-L1-006. 连续因子
- PAT-L1-006. 连续因子
- L1-006. 连续因子-PAT团体程序设计天梯赛
- PAT L1-006 连续因子