**问题描述
设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出23。输入20,输出22*5。**例:
数据规模和约定
输入数据中每一个数在int表示范围内。
法一:程序代码如下
#include<stdio.h>
int isprime(int n)//判断素数
{
int flag=1;
if(n==2) return 1;
if(n%2==0||n==1) return 0;//1和偶素不是素数
for(int i=3;i<n;i+=2)
{
if(n%i==0){
flag=0;
break;
}
}
return flag;
}
int main()
{
int n,flag=1;
scanf("%d",&n);
if(isprime(n))
{
printf("%d",n);
}
else
{
for(int i=2;i<=n;i++)
{
while(n%i==0&&isprime(i))
{
if(flag)
{
printf("%d",i);
flag=0;
}
else
{
printf("*%d",i);
}
n/=i;
}
}
}
return 0;
}
法二:程序代码如下
#include<stdio.h>
int main()
{
int n,x = 1,flag = 1;
scanf("%d",&n);
while(n != 1)
{
x++;
while(n % x == 0)
{
if(flag)
{
flag =0;
printf("%d",x);
}
else
{
printf("*%d",x);
}
n /= x;
}
}
return 0;
}