2016-10-24 6 views
0

숫자 배열 배열의 최저 배수를 찾으려고합니다. 다음 수식을 사용하여 LCM을 찾는 데 가장 큰 공약수를 사용하는 값을 찾습니다.가장 낮은 공통 배수를 찾으십시오

enter image description here

내 프로그램이 제대로 GCD를 계산하지만, 그것이 제공 GCD를 사용하여 LCM을 찾을 때 잘못된 LCM value.What이 많이 주시면 감사하겠습니다 내 logic.Any 도움이 잘못 될 수 있습니다.

#include<stdio.h> 

int main(){ 
    int arr[10]={10,20,30,40,50,60,70,80,90,100}; 
    int GCD=findGCD(arr[0],arr[1]); 
    int LCM=(arr[0]*arr[1])/GCD; 
    int i; 
    for(i=2;i<sizeof(arr)/sizeof(arr[0]);i++){ 
     int temp = GCD; 
     GCD = findGCD(temp,arr[i]); 
     LCM = (temp*arr[i])/GCD; 
    } 
    printf("GCD IS %d AND LCM IS %d",GCD,LCM); 

} 

int findGCD(int num1,int num2){ 
    if(num2 == 0){ 
     return num1; 
    } 
    if(num1%num2 == 0){ 

     return num2; 
    } 
    return findGCD(num2,num1%num2); 
} 
+1

GCD와 LCM 무엇을하고 무엇을 참조? – user3528438

+1

예상되는 출력과 실제 출력의 예를 보여주십시오. –

+3

'int arr [10] = {49,21,7,14,28,42,35,49,56,70,64};''int arr [11] = {49,21,7,14}이어야합니다. , 28,42,35,49,56,70,64}, ' –

답변

0

또는 findGCD를 가능한 한 적게 호출하면서 GCD 및 LCM을 계산하려는 귀하의 목표였습니까?

int main(){ 
    int arr[10]={10,20,30,40,50,60,70,80,90,100}; 
    int GCD=arr[0]; 
    int LCM=arr[0]; 
    int i; 

    for(i=1;i<sizeof(arr)/sizeof(arr[0]);i++){ 
     GCD = findGCD(GCD,arr[i]); 
     LCM = (LCM * arr[i])/findGCD(LCM, arr[i]); 
    } 

    printf("GCD IS %d AND LCM IS %d",GCD,LCM); 
} 
관련 문제