题意:编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
思路:找到n中(开平方后)的所有因子,逐个判断它的最长连续因子个数。
1 #include <iostream> 2 #include<math.h> 3 using namespace std; 4 5 int main() 6 { 7 long long n, i, m = 0, j, k; 8 cin >> n; 9 int q = 1; 10 //找n中的因子进行判断 11 for(i = 2; i <= sqrt(n); i++) 12 { 13 q = 1; 14 for(j = i; j * q <= n; j ++) 15 { 16 if(n % (q*j) == 0) 17 { 18 if(j-i+1 > m) 19 { 20 m = j-i+1;//m用来记录连续因子的最大个数 21 k = j;//k用来记录结束的因子 22 } 23 q *= j;//累乘前面的连续因子 24 25 } 26 else 27 break; 28 } 29 } 30 if(m == 0)//特殊情况 31 { 32 k = n; 33 m = 1; 34 } 35 cout<<m<<endl; 36 k -= m; 37 k ++; 38 cout<<k; 39 k ++; 40 m -= 1; 41 while(m--) 42 { 43 cout<<"*"; 44 cout<<k; 45 k++; 46 } 47 return 0; 48 }