How to find the smallest number that is evenly divisible by all of the numbers from 1 to 20 in C

2 Answers

0 votes
#include <stdio.h>

// LCM  = Least Common Multiple
int LMC(int a, int b) {
    int lmc = (a > b) ? a : b;
     
    while(1) {
        if (lmc % a == 0 && lmc % b == 0) {
            return lmc;
        }
        lmc++;
    }
}
 
int main(void)
{
  unsigned int result = 1;
  
  for (int i = 1; i <= 20; i++) {
        printf("result = %d i = %d\n", result, i);
        result = LMC(result, i);
        printf("result = %d\n", result);
  }
  
  printf("%d", result);
  
  return 0;
}



/*
run:

result = 1 i = 1
result = 1
result = 1 i = 2
result = 2
result = 2 i = 3
result = 6
result = 6 i = 4
result = 12
result = 12 i = 5
result = 60
result = 60 i = 6
result = 60
result = 60 i = 7
result = 420
result = 420 i = 8
result = 840
result = 840 i = 9
result = 2520
result = 2520 i = 10
result = 2520
result = 2520 i = 11
result = 27720
result = 27720 i = 12
result = 27720
result = 27720 i = 13
result = 360360
result = 360360 i = 14
result = 360360
result = 360360 i = 15
result = 360360
result = 360360 i = 16
result = 720720
result = 720720 i = 17
result = 12252240
result = 12252240 i = 18
result = 12252240
result = 12252240 i = 19
result = 232792560
result = 232792560 i = 20
result = 232792560
232792560

*/

 



answered Oct 17, 2023 by avibootz
0 votes
#include <stdio.h>

// LCM  = Least Common Multiple
int LMC(int a, int b) {
    int lmc = (a > b) ? a : b;
     
    while(1) {
        if (lmc % a == 0 && lmc % b == 0) {
            return lmc;
        }
        lmc++;
    }
}
 
int main(void)
{
  unsigned int result = 1;
  
  for (int i = 1; i <= 20; i++) {
        result = LMC(result, i);
  }
  
  printf("%d", result);
  
  return 0;
}



/*
run:

232792560

*/

 



answered Oct 17, 2023 by avibootz
...