app手机网站模板免费下载,设计教育培训,人工智能在线ai写作网站,17素材网下载题目要求#xff1a;
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3567#xff0c;其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N#xff0c;要求编写程序求出最长连续因子的个数#xff0c;并输出最小的连续因子序列。
输入格式#xff…题目要求
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N要求编写程序求出最长连续因子的个数并输出最小的连续因子序列。
输入格式
输入在一行中给出一个正整数 N1N231。
输出格式
首先在第 1 行输出最长连续因子的个数然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列其中因子按递增顺序输出1 不算在内。
输入样例
630
输出样例
3
5*6*7
思路 1.根据以下代码先将输入n的因子放到一个数组里面 for(int i 2; i sqrt(n) 1; i )
{if(n % i 0)a[q ] i;
}
if(q 0)a[q ] n; 2.q代表n的因子的个数遍历这些因子看是否满足相邻 3.判断因子之间是否相差1即相邻如果是则继续进行判断如果不是跳出循环从第二个因子后面进行判断 4.如果满足相邻将相邻数*到一起放到sum里面 5.如果sum是n的因子则进行t来统计连续因子个数与max进行比较更新max并且记录第一个因子的位置i如果sum不是n的因子则跳出循环 6.按输出要求进行输出 代码
#include bits/stdc.husing namespace std;#define N 10000int main()
{int n;int q 0;int a[N];cin n;for(int i 2; i sqrt(n) 1; i ){if(n % i 0)a[q ] i;}if(q 0)a[q ] n;int max 1;int sum;int t;int y 0;for(int i 0; i q; i ){sum a[i];t 1;for(int j i 1; j q; j ){if(a[j] a[j - 1] 1){sum * a[j];if(n % sum 0){t ;if(t max){max t;y i;}}else break;}elsebreak;}}cout max endl;for(int k y; k y max; k )if(k ! max y - 1)cout a[k] *;elsecout a[k] endl;return 0;
}
测试结果