PAT L1-006 连续因子
来源:互联网 发布:openstack网络配置 编辑:程序博客网 时间:2024/06/07 08:29
L1-006. 连续因子
一个正整数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
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;}
参考博客
0 0
- PAT L1-006 连续因子
- PAT L1-006 连续因子
- PAT L1-006 连续因子
- pat L1-006. 连续因子
- PAT-L1-006. 连续因子
- L1-006 连续因子
- 【PAT】【GPLT】【2016 天梯】 L1-006 连续因子
- PAT-天梯赛练习集-L1-006-连续因子
- PAT L1-6. 连续因子 (暴力)
- PAT L1-6 最长连续因子
- C++ - PAT - L1-006. 连续因子
- PAT (Advanced Level) L1-6. 连续因子 for循环暴力
- L1-6. 连续因子 PAT团体程序设计天梯赛
- L1-006. 连续因子-PAT团体程序设计天梯赛
- CCCC/GPLT L1-006 连续因子
- L1-6. 连续因子
- L1-6. 连续因子
- L1-006. 连续因子
- 输入框去空格正则 以及 switch 的用法
- DB2通过命令导入数据库
- java--连接数据库
- Release Schedule of Current Database Releases (Doc ID 742060.1)
- undefined is not a function (evaluating 'this.props.renderScene(route,this)')
- PAT L1-006 连续因子
- hdu 1896 Stones(优先队列 Dijkstr)
- 云信聊天界面返回键总返回到聊天列表
- Foxmail软件的安装和使用
- 二进制 真值 原码 反码 补码
- spring的AbstractRoutingDataSource 多数据源切换
- Android中植入支付宝遇到的坑
- 又一篇杂记
- mysql的sql_mode合理设置