C语言编程练习--分解质因素(debug)

题目内容:

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

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

 输入格式: 一个整数,范围在[2,100000]内。

输出格式:形如: n=axbxcxd    2. n=n所有的符号之间都没有空格,x是小写字母x。

输入样例:18

输出样例:18=2x3x3

时间限制:500ms内存限制:32000kb
 1 /*
 2     题目内容:
 3     1.每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式;
 4     2.这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
 5     3.输入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。
 6     4.输入格式:一个整数,范围在[2,100000]内。
 7     5.输出格式:形如:n=axbxcxd或n=n所有的符号之间都没有空格,x是小写字母x。
 8     6.输入样例:18
 9     7.输出样例:18=2x3x3 
10 
11     4 = 2x2
12     6 = 2x3
13     8 = 2x2x2
14     9
15     12
16     14
17     15
18     16
19     18
20     20
21 */
22 
23 
24 #include <stdio.h>
25 #include <math.h>
26 
27 int isPrime(int a);
28 int rsUnprime(int a,int b);
29 
30 int main()
31 {
32     int num;
33     int pm = 2;
34     
35     scanf("%d",&num);
36     if(isPrime(num) != 0)
37     {
38         printf("%d=%d",num,num);
39     }else{
40         printf("%d = ",num);
41         while(num != 1){
42             pm = rsUnprime(num,pm);
43             num = num / pm;
44             if(num  != 1){
45                 printf("%dx",pm);
46                 
47             } else{ 
48                 printf("%d",pm);
49             } 
50         }
51         //printf("%d\n",num);
52     }    
53     //return 0;
54 }
55 
56 
57 int isPrime(int a)
58 {
59     int i;
60     int isPrime;
61     
62     for(i = 2; i < a; i++)
63     {
64         if(a % i == 0)
65         {
66             isPrime = 0;
67             break;
68         }else{
69             isPrime = 1;
70         }
71     }   
72     return isPrime;
73 } 
74 
75 int rsUnprime(int a,int b)
76 {
77     int i = b;
78     
79     while(a % i != 0) {
80         i++;
81     }
82     
83     return i;
84 }

 

posted @ 2017-07-10 15:02  Niicer  阅读(420)  评论(0)    收藏  举报