2014-09-13 1 views
0

클래스에 대한 코드를 작성하려고합니다. 이 프로그램은 사용자가 숫자를 입력하게하고 그것의 계승의 각 요소의 지수를 출력합니다. 예를 들어 사용자가 5 번을 입력하면 출력은 3 1 1 (2^3, 3^1, 5^1)이됩니다. 지금까지 계승의 주요 요인을 얻는 코드가 있습니다. 그러나 나는 지수를 얻을 수 없습니다.계승의 소수 요소의 출력 전력

내 코드는 다음과 같습니다 :

#include <iostream> 
#include <conio.h> 
#include <windows.h> 
using namespace std; 

int main() 
{ 
int number, factor, exp, product, x, factorial=1; 

cout <<"PRIME FACTORIALS" <<endl; 
cout <<" " <<endl; 
cout <<"Welcome! This program allows users to find the prime factors of a number and its exponents or how many times each prime factor is multiplied." <<endl; 
cout <<" " <<endl; 
cout <<"To begin, please input a positive integer below:" <<endl; 
cin >>number; 

if ((number<1) || (number>100)) 
{ 
    cout <<"You have entered a number that is out of range. Please enter a number from 1-100." <<endl; 
    system("PAUSE"); 
    system("cls"); 
    main(); 
} 

else 
{ 
    for (x=1; x<=number; x++) 
    { 
     factorial=factorial*x; 

     for (factor=2; factor<=factorial; factor++) 
     { 
      while (factorial%factor==0) 
      { 
       factorial/=factor; 
       cout <<factor <<" "; 
      } 
     } 
    } 
} 
} 
+0

예, 해결했습니다. 내가 어떻게 주요 요인의 지수를 출력 할 수 있었는지 생각해보십시오. – Jean

+0

각 요소에 대해 부서가 성공한 횟수를 계산합니다. (현재 귀하는 현재 주요 요인뿐만 아니라 가능한 모든 요소를 ​​시도하고 있습니다.) –

+0

cf. https://stackoverflow.com/questions/21196814/prime-numbers-and-factorials/21235844#21235844 –

답변

0

당신은 그 요인을 작업하기 전에 계승을 계산 완료하지 않나요? 나는. factorial = factorial * x; 뒤에 }이 있습니까?