每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。
提示:可以用一个函数来判断某数是否是素数。
代码段:
#include<stdio.h>
int prime(int a) //判断是否为素数
{
int i;
int isprime = 0;
if(a == 2) isprime = 1;//下面的判断程序不包含2,故单独列出
for(i=2;i<a;i++)
{
if(a%i == 0)
{
isprime = 0;
break;
}
else
{
isprime = 1;
}
}
return isprime;
}
int main()
{
int num;
int i;
scanf("%d",&num);
printf("%d=",num);
if(prime(num))
{
printf("%d",num);
}
else
{
do
{
for(i=2;i<=num;i++)
{
if(prime(i) && ((num%i) == 0))//判断是否为num的质因数
{
printf("%d",i);
num = num / i;
if(num != 1)//判断是否为最后一个质因数,最后一个质因数不带乘号
{
printf("x");
i = i - 1;//由于质因数也可以重复,所以当不是最后一个质因数时,将i赋值为i-1再次判断这个i是否还能作为质因数
}
}
}
}while(num != 1);
}
return 0;
}