网易云课堂_程序设计入门-C语言_第五周:函数_1分解质因数

1
分解质因数(5分)

题目内容:

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

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

输入格式:

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

输出格式:

形如:

  1.  n=axbxcxd

  1.  n=n

所有的符号之间都没有空格,x是小写字母x。

输入样例:

  1.  18

输出样例:

  1.  18=2x3x3
时间限制:500ms内存限制:32000kb
 
 1 #include <stdio.h>
 2 int isprime(int);
 3 int nextprime(int);
 4 main()
 5 {
 6     int i, a = 2, b, n = 0;
 7     scanf("%d", &i);
 8     if (isprime(i))
 9     {
10         printf("%d=%d
", i, i);
11     }
12     else
13     {
14         printf("%d=", i);
15         b = i;
16         while (b > 1)
17         {
18             if (b%a == 0)
19             {
20                 if (n > 0)
21                 {
22                     printf("x");
23                 }
24                 b = b / a;
25                 printf("%d", a);
26                 n++;
27             }
28             else
29             {
30                 a++;
31                 a = nextprime(a);
32             }
33         }
34     }
35 }
36 
37 int isprime(int i)
38 {
39     int a, tag = 1, b = 1;
40     for (a = 2; a <= i / 2; a++)
41     {
42         tag = 1;
43         if (i%a == 0)
44         {
45             tag = 0;
46             break;
47         }
48     }
49     if (tag == 1)
50     {
51         b = 1;
52     }
53     else
54     {
55         b = 0;
56     }
57     return b;
58 }
59 
60 int nextprime(int a)
61 {
62     for (;;)
63     {
64         if (isprime(a))
65         {
66             return a;
67         }
68         else
69         {
70             a++;
71         }
72     }
73 }
原文地址:https://www.cnblogs.com/denggelin/p/5395780.html