c 网站开发简单实例,北京市昌平建设工程招标网站,怎样做网站框架图,wordpress后台账号密码一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3567#xff0c;其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N#xff0c;要求编写程序求出最长连续因子的个数#xff0c;并输出最小的连续因子序列。
输入格式#xff1a;
输入在一行中给出一…一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N要求编写程序求出最长连续因子的个数并输出最小的连续因子序列。
输入格式
输入在一行中给出一个正整数 N1N231。
输出格式
首先在第 1 行输出最长连续因子的个数然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列其中因子按递增顺序输出1 不算在内。
输入样例
630
输出样例
3
5*6*7
鸣谢用户 漏穿雪 补充数据
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#includeiostream
#includemath.h
using namespace std;int main() {int N, mL 0, start 0;//mL最大长度start表示连续因子开始的那个数cin N;for (int i 2; i sqrt(N); i) {long temp 1;for (int j i; temp N; j) {if (N % temp 0 j - i mL) {//判断是否为因子以及长度是否更新mL j - i;start i;}if (temp * j N) {temp * j;} else {break;}}}if (mL 0) {//如果是素数则除了1和本身没有其它因子cout mL endl;for (int i 0; i mL; i) {if (i ! 0) {cout *;}cout i start;}} else {cout 1 endl N;}return 0;
}
补充
范围是从2到sqrtN因为开根号后面不可能连续
第一重循环定的是开始的因子第二重循环是从i开始往后找最长的连续因子
注意素数的存在所以要判断一下最长的长度如果mL为0则为素数输出本身
还有边界值的存在注意判断条件小于等于
测试点6的数据很大一开始temp用的int老是浮点错误
后来用long定义temp就通过测试点6了