가변 숫자의 LCM을 찾는 프로그램은 다음과 같습니다.LCM 프로그램의 복잡성은 무엇입니까?
전 용: 난 3,9,13의 LCM을 찾을 수 있다면 그때는 다음과 같이 실행한다 : LCM을 (1,3) LCM (3,9) LCM (9, 13)
제가 알고 싶은 것은이 프로그램의 복잡성입니다. 그것은 O (n) 또는 O (n^2)입니까? 왜 그런지 말해 줄 수 있습니까?
#include <stdio.h>
int gcd(int x,int y)
{
int n;
if(x>y)
n=y;
else
n=x;
while(n>=0){
if(x%n==0 && y%n==0){
return n;
break;
}
n--;
}
return 1;
}
int lcm(int a,int b)
{
return a*b/gcd(a,b);
}
int main()
{
int tot,i,l=1;
int n[10];
printf("Enter the total numbers:");
scanf("%d",&tot);
if(tot>10 || tot<2){
printf("Sorry invalid inputs");
return 1;
}
printf("Enter the numbers one by one:");
for(i=0;i<tot;i++)
scanf("%d",&n[i]);
for(i=0;i<tot;i++){
l=lcm(l,n[i]);
}
printf("The LCM is %d",l);
return 0;
}
귀하의 사례에서 'n'은 무엇입니까? Btw. 'lcm (1, x) = x' 이후 첫 번째''lcm'을 버림으로써 최적화 할 수 있습니다. – Henry
n은 lcm을 찾을 수있는 총 숫자입니다. – svetaketu
'x % 0'은 무엇입니까? 돌아온 후 휴식 시간은 어디에서 끝나나요? 어쨌든, 시퀀스에 다른 알고리즘을 반복적으로 적용하여 구성된 알고리즘을 가지고 있다면 복잡도는 시퀀스의 길이에 서브 알고리즘의 복잡도를 곱한 값입니다. 스포일러를 제공하지 않기 위해 나머지는 맡길 것입니다. –