#931: 輸出結果不一,請指教


bear24ice (我決定放棄ZJ了……)


#include<stdio.h>
main(){
    int a,i,t;
    while(scanf("%d",&a)!=EOF){
        if(a%2==0){
   printf("2");
   for(t=0;a%2==0;t++){
   a/=2;
   }
   if(t>1) printf("^%d",t);
   printf(" * ");
        }
        for(i=3;i<=a;i+=2){
            if(a%i==0){
   printf("%d",i);
   for(t=0;a%i==0;t++){
   a/=i;
   }
   if(t>1) printf("^%d",t);
   printf(" * ");
         }
        }
        printf("\b\b \n");
 }
}

最後面總是多輸出一個「 * 」

可是我自己編譯的都沒這問題

#967: Re:輸出結果不一,請指教


ken0816 (林宇亮不是我)


#include<stdio.h>
main(){
    int a,i,t;
    while(scanf("%d",&a)!=EOF){
        if(a%2==0){
   printf("2");
   for(t=0;a%2==0;t++){
   a/=2;
   }
   if(t>1) printf("^%d",t);
   printf(" * ");
        }
        for(i=3;i<=a;i+=2){
            if(a%i==0){
   printf("%d",i);
   for(t=0;a%i==0;t++){
   a/=i;
   }
   if(t>1) printf("^%d",t);
   printf(" * ");
         }
        }
        printf("\b\b \n");這行有誤,此網站無法使用。
 }
}

 

這是我寫的程式碼:

#include<stdio.h>
#include<stdlib.h>

int main(){
    int a,i,t,b[1000]={0},c;
    while(scanf("%d",&a)!=EOF){
        c=0;
   if(a%2==0){
   b[c]=2;
   for(t=0;a%2==0;t++){
   a/=2;
   }
   if(t>1) b[c+1]=t;
   c=c+2;
   }
       
        for(i=3;i<=a;i+=2){
            if(a%i==0){
   b[c]=i;
   for(t=0;a%i==0;t++){
   a/=i;
   }
   b[c+1]=t;
   c=c+2;
      }
   }
  
   for(i=0;i<=c-2;i=i+2){
   if(b[i+1]>1) printf("%d^%d",b[i],b[i+1]);
   else printf("%d",b[i]);
   if(i<=c-4)printf(" * ");
   }
        printf("\n");
 }
 return 0;
}