团体程序设计天梯赛PTA L1-006连续因子

题意:编写程序求出最长连续因子的个数,并输出最小的连续因子序列。

思路:找到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 }
原文地址:https://www.cnblogs.com/dark-ming/p/13606889.html