/*说道分解质因子,恰巧昨天也写了个
大家看看.*/
#include
typedef struct{
int data;
int flag;
}lig;
int zhishu(lig a[])//保存1000以内所有的质数
{
int i,j,k=0;
for(i=2;i<=1000;i++)
{
for(j=2;j*j
{
if(i%j==0)
{
break;
}
}
if(j*j>i)
{
a[k].data=i;
a[k].flag=0;
//printf("%d %d %d\n",k,a[k].data,a[k].flag);
k++;
}
}
return(k);
}
int main()
{
int i,j,num,temp,len;
lig a[250];
len=zhishu(a);
printf("输入一个(2~1000)的整数,以0结束:");
while(EOF!=(scanf("%d",&num))&&num!=0)
{
for(i=0;i
{
a[i].flag=0;
}
i=0;
j=0;
temp=0;
printf("%d的质因子分解式是:",num);
while(num!=1)
{
while(num%a[i].data==0)
{
a[i].flag++; //统计质因子的幂
num=num/a[i].data;
}
i++;
}
while(j
{
if(a[j].flag!=0)
{
if(temp==1)//控制格式
{
printf(" * ");
}
printf("%d^%d",a[j].data,a[j].flag);
temp=1;
}
j++;
}
printf("\n\n");
printf("输入一个(2~1000)的整数,以0结束:");
}
return(0);
}
[此贴子已经被作者于2006-10-6 16:32:14编辑过]