第7章实验任务6 从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"It is a prime number"。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出"It is a prime number"。 输入提示信息:"Input m:" 输入格式:"%d" 输出格式: 是素数时输出"It is a prime number\n" 否则输出用"%d = ","%d * " 运行示例1: Input m:90↙ 90 = 2 * 3 * 3 * 5 运行示例2: Input m:13↙ It is a prime number
这个题目我从网上搜答案都不太对或者不适合初学者(比如我)才刚刚学数组,所以出了一个简单一点的代码。
#include<stdio.h>
int Isprime(int n);
int solve(int m);
int main(void)
{
int m,n;
printf("Input m:");
scanf("%d",&m);
if(Isprime(m)==1)
{
printf("It is a prime number\n");
}
else
{
solve(m) ;
}
}
int Isprime(int n)
{
int i,x;
x=n/2;
for(i=2;i<=x;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int solve(int m)
{
int n;
printf("%d =",m);
for(n=2;n<=m;n++)
if(m%n==0)
{
if(n!=m)
{
do
{
printf(" %d *",n);
m=m/n;
}while(m%n==0);
}
else
printf(" %d",m);
}
}