C语言分解质因数

Posted on   Astro_Leon  阅读(387)  评论(0编辑  收藏  举报
复制代码
 1 #include<stdio.h>
 2 
 3 int isprime(int n)//判断素数
 4 {
 5     int k = 0;
 6     for (int i=2;i<n/2;i++)
 7     {
 8         if (n % i== 0)
 9         {
10             k++;//如果发生相加,则说明不是素数
11             break;
12         }
13     }
14     k = !k;//0表示不是素数。返回1则表示是素数
15     return k;
16 }
17 int fun(int a)//分解质因数
18 {
19     int b;
20     for (int i = 2; i < a / 2; i++)
21     {
22 
23         if (a % i == 0)
24         {
25             b = isprime(i);
26             if (b)//说明i为素数因子
27             {
28                 printf("*%d",i);
29                 a = a / i;
30             }
31         }
32     }
33     return a;
34 }
35 int main()
36 {
37     int a,b;
38     scanf_s("%d",&a);
39     printf("a=1");
40     b=fun(a);
41     while (a != b)//说明没有分解到最后一项,则继续分解
42     {
43         a = b;
44         //printf("*%d", a);
45         b=fun(a);
46     }
47     printf("*%d",b);
48     return 0;
49 }
复制代码

 

努力加载评论中...
点击右上角即可分享
微信分享提示