实践周4

 1 #include <iostream>
 2 #include <math.h>
 3 #include <string.h>
 4 using namespace std;
 5 int is_prime(int n)
 6 {
 7     int i;
 8     for(i = 2;i < sqrt(n);i++ )
 9     {
10         if(n%i==0)
11         {
12             break;
13         }
14     }
15     if(i>sqrt(n))
16     {
17         return 1;
18     }
19     else
20     {
21         return 0;
22     }
23 }
24 int main()
25 {
26     int i,j,n,a = 0,b = 0;
27     cin >> n;
28     if(is_prime(n)==1)
29     {
30         cout << 1 << endl << n << endl;
31         return 0;
32     }
33     for(i = 2;i < sqrt(n) + 1;i++)
34     {
35         if(n % i == 0)
36         {
37             int sum = i;
38             for(j = i + 1;j < sqrt(n) + 1;j++)
39             {
40                 sum *= j;
41                 if(n % sum != 0)
42                 {
43                     break;
44                 }
45             }
46             if(a < j - i)
47             {
48                 a = j - i;
49                 b = i;
50             }    
51         }
52     }
53     cout << a << endl;
54     for(i = b;i <= a+b-1;i++)
55     {
56         if(i != b)
57         {
58             cout << "*";
59         }
60         cout << i;
61     }
62     cout << endl;
63     return 0;
64 }

这一题是连续因子,首先判断是不是素数,是素数的话就直接输出,所以上来先写一个判断素数的函数。

然后再找连续因子,基本就是穷举,只不过是比较有技巧,先找能被整除的数,再记录下每一个的长度和起始数,最后输出。

 

上一篇:数论——两种质数筛法


下一篇:排位赛(五)| B题