从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m以质因从小到大顺序排列的乘积形式输出,否则输出" It is a prime number"。例如,用户输入90时,程序输出90=2×3×3×5;用户输入17时,程序输出"It is a prime number"。
输入
输入一个整数m
输出
将m以质因从小到大顺序排列的乘积形式输出,否则输出"It is a prime number"。
样例
标准输入复制文本 |
90 |
标准输出复制文本 |
90=2*3*3*5 |
标准输入复制文本 |
17 |
标准输出复制文本 |
It is a prime number |
大概思路:
1.从2到输入数m的每一个素数i,若为m的因子,则输出i与*
2.令m/=i,重复第一步,直到m==i
3.m==i则输出m
代码:
#include <stdio.h>
#include <math.h>
int sushu(int n){
int i=2;
int a=0;
for(i=2;i<=sqrt(n);i++){
if (n%i==0)
a++;}
if(a==0)
return n;
else
return 0;
}
int main(){
int m;
int i;
scanf("%d",&m);
if(sushu(m))
printf("It is a prime number");
else{
printf("%d=",m);
for(i=2;i<=m;i++){
if (m==i){
printf("%d",m);
break;}
if(sushu(i))
while(m!=i){
if(m%i==0){
printf("%d*",i);
m/=i;
}
else
break;}
}
}
return 0;
}