题目要求

分解质因数:仅针对合数3.,将合数分解成质因数相乘的形式

例如:输入:100

          输出:100=2*2*5*5

基本思想

从最小的质数2开始除,直到结果为质数为止。

从最小的质数i=2开始,

第1步:100%2=0,100/2=50-->保存质数2

第2步: 50%2=0,  50/2=25-->保存质数2

第3步: 25%2=1,  25/2=12-->i++

第4步: 25%3=1,  25/3=8-->i++

第5步: 25%4=1,  25/4=6-->i++

第6步: 25%5=0,  25/5=5-->保存质数5

第7步:  5%5=0,    5/5=1-->保存质数5

第8步:  1%5=1,    5/5=1-->i++

.   .   .

知识点

1.标准输入函数scanf()和输出函数printf();

2.if(){}控制结构

3.for()循环语句

4.素数和合数

1)素数:又称为质数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。

2)合数 :除质数(素数)外的数都是合数。

3)1和0既不是质数也不是合数,2是素数。

代码:

#include <stdio.h>
int main(void){
int num;
scanf("%d",&num);//输入任意的整数num
int a[100];//存储质因数
int cnt=0;
int i;
for(i=2;i<=num;i++){ //从最小的质数i=2开始
if(num%i==0){
num/=i;
a[cnt]=i;//保存质因数
cnt++;//为保存下一个质因数做准备
i--;
}
}
//输出
if(cnt==0||cnt==1){
printf("1*%d\n",num);
}
else{
printf("=");
for(i=0;i<cnt-1;i++){
printf("%d*",a[i]);
}
printf("%d\n",a[i]);
}

return 0;
}

运行结果:

100
=2*2*5*5

-----------------END-----------------