第六周 1 分解质因数(5分)

题目内容:

每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。

 

现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。

 

提示:可以用一个函数来判断某数是否是素数。

 

输入格式:

一个整数,范围在[2,100000]内。

 

输出格式:

形如:

n=axbxcxd

n=n

所有的符号之间都没有空格,x是小写字母x。abcd这样的数字一定是从小到大排列的。

 

输入样例:

18

 

输出样例:

18=2x3x3

时间限制:500ms内存限制:32000kb
 
 1 #include <stdio.h>
 2 
 3 int isP(int p);   //判断是否为素数
 4 
 5 int main()
 6 { 
 7     int shuru;    //输入的数
 8     int m;
 9     int geshu = 1;    //是否为第一位
10     scanf("%d", &shuru);    //输入一个整数
11     printf("%d=",shuru);
12     for ( m=2; m<=shuru; ) {    
13       if ( (shuru % m == 0) && isP(m) ) {   //输入的数可以被m整除,且m为素数
14         if( geshu != 1)         //如果不是第一个数
15           printf("x");          //输出“x”
16         printf("%d", m);
17         shuru = shuru / m;
18         geshu++;
19       } else m++;       //这时候才+1,保证假如shuru可以被m整除超过一次,可以输出所有的。
20     }  
21     return 0;
22 }
23 
24 int isP(int m)
25 {
26   int n;
27   int isprime = 1;
28   for (n=2; n<m/2; n++) {
29     if ( m%n == 0){
30       isprime = 0;
31       break;
32     }
33       
34   }
35   return isprime;
36 }

 

posted @ 2018-02-20 17:34  左揽雀尾007  阅读(210)  评论(0编辑  收藏  举报