幫幫我!
不管怎麼做還是RE!
#include<stdio.h>
int main()
{
unsigned long int a, i;
while(scanf("%u",&a)!=EOF)
{ int j=0,x=0;
int b[10000]={0};
for( i=2;i<=a;i++)
{
if(a%i==0)
{ b[i]=b[i]+1;
a=a/i;
i=1;
if(a==1){
break;
}
}
}
while(j<10000){
if(b[j]>0)
x++;
j++;
}
x=x-1;
j=0;
while(j<10000)
{
if(b[j]==1)
{
printf("%d",j);
if(x>0)
{
printf(" * ");
x--;
}
}
else if(b[j]>1)
{
printf("%d^%d",j,b[j]);
if(x>0)
{
printf(" * ");
x--;
}
}
j++;
}
x=0;
printf("\n");
}
return 0;
}
幫幫我!
不管怎麼做還是RE!
#include
int main()
{
unsigned long int a, i;
while(scanf("%u",&a)!=EOF)
{ int j=0,x=0;
int b[10000]={0};
for( i=2;i<=a;i++)
{
if(a%i==0)
{ b[i]=b[i]+1;
a=a/i;
i=1;
if(a==1){
break;
}
}
}
while(j<10000){
if(b[j]>0)
x++;
j++;
}
x=x-1;
j=0;
while(j<10000)
{
if(b[j]==1)
{
printf("%d",j);
if(x>0)
{
printf(" * ");
x--;
}
}
else if(b[j]>1)
{
printf("%d^%d",j,b[j]);
if(x>0)
{
printf(" * ");
x--;
}
}
j++;
}
x=0;
printf("\n");
}
return 0;
}
程式碼太凌亂...
我看不太懂你寫的...
陣列開大點 ?
另外陣列開太大 須宣告全域..
100000用不到unsigned int
32位元平台 long int=int (2147483647)