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 }
这一题是连续因子,首先判断是不是素数,是素数的话就直接输出,所以上来先写一个判断素数的函数。
然后再找连续因子,基本就是穷举,只不过是比较有技巧,先找能被整除的数,再记录下每一个的长度和起始数,最后输出。