7.10
#include<iostream> #include<cmath> using namespace std; typedef long long ll; int start, len;//序列开始因子和连续因子个数 int main() { cin.tie(0); ll N; cin >> N; int start = 0, len = 0; for(int i = 2; i <= sqrt(N); i++ ) { int j = i, sum = 0; int n = N; while(n % j == 0) { n = n / j; j ++; sum ++ ; } if(sum > len) { start = i; len = sum; //更新个数 } } if(start == 0)//N是质数,只有自己一个因子 { start = N; len = 1; } cout << len << endl << start;//输出长度和第一个连续因子 for(int i = start + 1; i < start + len; i++) cout << "*" << i; return 0; }
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
今天就打了一个代码,我觉得这个好难,这个写了一直出错后来在网上查找改正才成功,花了好长时间
网课学习了创建对象及其内存情况