#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>
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;
}