连续因子
来源:互联网 发布:征途小秘数据搜索失败 编辑:程序博客网 时间:2024/04/30 15:42
一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输入在一行中给出一个正整数N(1<N<231)。
输出格式:
首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。
输入样例:630输出样例:
35*6*7
思路:见注释
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){ int n; cin>>n; int l = sqrt(n); int i; for( i = 2;i<=l;i++) { if(n%i==0) break; } if(i>=l+1) //判断是否为质数,是的话长度1,最大是本身 { cout<<"1\n"<<n; } else //不是质数 { int Max = 0; for(i =2;i<=l;i++) { if(n%i==0) { int j = i; int len = 0; int m = n; while(m%j==0) { m/=j; j++; len++; } if(len>Max) Max = len; } }//获得最大长度 //-------------------------------------------------------- if(Max!=1) //最大长度不为1 { cout<<Max<<"\n"; for( i =2;i<=l;i++) { if(n%i==0&&n%(i+1)==0) { int j =i; int m =n; int len=0; while(m%j==0) { m/=j; j++; len++; } if(len==Max) //输出第一个长度达最大的连续因子即为最长中最小 { j =i; m =n; cout<<j; m /=j;j++; while(m%j==0) { cout<<"*"<<j; m/=j; j++; } break; } } } }//--------------------------------------------------------- else { cout<<Max<<"\n"; for( i =2;i<=l;i++)//最长为1,输出第一个因子 { if(n%i==0) { cout<<i; break; } } } //--------------------------------------------------------- } return 0;}
0 0
- 连续因子
- 连续因子
- 连续因子
- 连续因子
- 连续因子
- L1-6. 连续因子
- L1-6. 连续因子
- L1-006. 连续因子
- pat----连续因子
- PATL1-006 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- L1-006. 连续因子
- 天梯赛 连续因子
- OKHttp源码解析好文连接
- Spring Aop实例之xml配置
- Qt Data Visualization 安装教程
- HTML 空格符
- html5绘制火柴棒人物
- 连续因子
- Oracle表误删恢复数据
- RACOBserve绑定收不到信号
- Linux下源码安装nginx-1.9.11
- jar包冲突
- mysql 存储过程详解
- Unity shader支持的Property
- Combining sorting methold
- 精简自己20%的代码