题目要求
分解质因数:仅针对合数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-----------------