逻辑有些问题,我修改好了:
#include
int main()
{
int n,m;
int i,j,k=0,jugde=1;
int a[100];
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j {
if(i%j==0)
{
jugde=0;
break;
}
}
if(jugde!=0)
{
a[k]=i;
k++;
}
jugde = 1;
}
/*上一步为将1到n的质数储存在数组a中*/
{
int x;
for(x=0;xprintf("%d ",a[x]);
printf("\n");
}
printf("%d=",n);
for(i=0;i{
if(n%a[i]==0)
{
m=n/a[i];
printf("%d",a[i]);
break;
}
}
/*上一步为输出第一个质因数*/
for(i=0;i{
if(m%a[i]==0)
{
while(m%a[i]==0)
{
printf("*%d",a[i]);
m=m/a[i];
}
}
if(m == 1)
break;
}
printf("\n");
return 0;
}
for(i=0; i{
if(n % a[i] == 0)
{
m = n / i ;
printf("%d",a[i]);
break;
}
}
这个循环中第一个i必然是0, 肯定报错啊!