2014-01-28 3 views
1
#include <stdio.h> 
int factor_power(int n,int d); 
int main() 
{ 
    int input; 
    do 
    { 
     printf("Enter an integer (> 1): "); 
     scanf("%d",&input); 
    }while(input<2); 
     printf("%d = ", input); 


     int current=input; 
     int i; 
     for(i=2; i<=current; i++) 
     { 
      int power=power_factor(current,i); 
      if(power!=0) 
      { 
       current=(int) (current/pow(i, power)); 
       printf("%d^%d * ",i,power); 
      } 
     } 

    return 0; 
} 
int power_factor(int n, int d) 
    { 
     int power=0; 
     if(d<=n) 
     { 
      while(n%d==0) 
      { 
       power++; 
       n=n/d; 
      } 
      return power; 
     } 
     return 0; 

    } 

Здравствуйте, я новичок в C. У меня проблема с выходом кода выше. Если вы запустите код, вы увидите, что в конце вывода есть дополнительный *. Поскольку C не имеет класс строк, как я могу избавиться от * в конце. Я знаю, что добавление строки - это варианты, но есть ли более быстрый и эффективный способ решения этой проблемы?Как я могу выполнить эту операцию?

ответ

2

Отпечатать * альтернативным способом.

int current=input; 
    int i; 
    int first_term = 1; 
    for(i=2; i<=current; i++) 
    { 
     int power=power_factor(current,i); 
     if(power!=0) 
     { 
      current=(int) (current/pow(i, power)); 
      if (!first_term) 
       printf(" * "); 
      first_term = 0; 
      printf("%d^%d",i,power); 
     } 
    } 
+0

спасибо. Это сработало. –

+0

@Robin Примите решение (V), если оно разрешено. – BLUEPIXY

Смежные вопросы