C语言 · 分解质因数

问题描述
  求出区间[a,b]中所有整数的质因数分解。
输入格式
  输入两个整数a,b。
输出格式
  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
提示
  先筛出所有素数,然后再分解。
数据规模和约定
  2<=a<=b<=10000
 
 1 #include<stdio.h>
 2 int main(){
 3     int a,b,i;
 4     int state;//状态 
 5     int c;//记录当前的值 
 6     scanf("%d%d",&a,&b);
 7     for(i=a;i<=b;i++){
 8         state=1;
 9         for(int j=2;j<i;j++)
10             if(i%j==0)  //若非质数让state为0 
11             {   
12                 state=0;  
13                 break;  
14             }  
15         if(state==1){//若为质数 
16             printf("%d=%d
",i,i);
17         }else if(state==0){
18             printf("%d=",i);
19             int j=2;
20             c=i;
21             while(1){
22                 while(c%j==0){
23                     printf("%d",j);
24                     c=c/j;
25                     if(c!=1)
26                         printf("*");
27                 }
28                 if(c==1){
29                     printf("
");
30                     break;
31                 }
32                 j++;
33             }
34         }
35     }
36 }
原文地址:https://www.cnblogs.com/panweiwei/p/6275090.html