编写函数,输出一个正整数的素数分解式。主函数的功能为输入若干正整数(大于1),输出每一个数的素分解式。素数分解式是指将整数写成若干素数(从小到大)乘积的形式。
例如:
20=225
36=2233
53=53
输入样例:
6 10 24 100 1000 1001 1002001
输出样例:
6=23
10=25
24=2223
100=2255
1000=222555
1001=71113
1002001=77111113*
供参考:
#include <stdio.h>
void fun(int n)
{
int i = 2, k = 0;
while (n != 1)
{
if (n % i == 0)
{
if (k == 0)
printf("%d=", n);
printf(k++ == 0 ? "%d" : "*%d", i);
n /= i;
}
else {
i++;
}
}
printf("\n");
}
int main()
{
int n;
while (scanf("%d", &n) == 1 && n > 1) // 输入 0 或 负数结束输入
fun(n);
return 0;
}
#include<stdio.h>
int main()
{
int n=0,i,t=1,s=1,temp;
int sushu(int m);
printf("Input a number(>1):");
scanf("%d",&n);
printf("%d=",n);
temp=n;
if(sushu(n)==1)
{
printf("%d",n);
}
else
{
do
{
for(i=2;i<=temp/2;i++)
{
if(sushu(i)==1&&temp%i==0)
{
if(t==1)
{
printf("%d",i);
t=0;
}
else
{
printf("*%d",i);
}
s*=i;
temp=temp/i;
if(sushu(temp)==1)
{
printf("*%d",temp);
s*=temp;
}
break;
}
}
}while(n>s);
}
printf("\n");
return 0;
}
int sushu(int m)//验证是否为素数
{
int i=2,flag=1;
for(;i<=m/2;i++)//查找到二分之一时就可以结束了
if(m%i==0)
{
flag=0;//不是素数,标示量设置为1
break;
}
return flag;//返回标示量,1表示是素数,0相反
}