w3resource

C Exercises: Smallest positive number divisible by 1-20

C Programming Challenges: Exercise-21 with Solution

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
Write a C program to find the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

C Code:

/* Copyright (c) 2009, eagletmt, Released under the MIT License <http://opensource.org/licenses/mit-license.php> */
#include <stdio.h>
static unsigned long gcd(unsigned long a, unsigned long b);
static __inline unsigned long lcm(unsigned long a, unsigned long b);
int main(void)
{
  unsigned long ans = 1;
  unsigned long i;
  for (i = 1; i <= 20; i++) {
    ans = lcm(ans, i);
  }
  printf("%lu\n", ans);
  return 0;
}
unsigned long gcd(unsigned long a, unsigned long b)
{
  unsigned long r;
  if (a > b) {
    unsigned long t = a;
    a = b;
    b = t;
  }
  while (r = a%b) {
    a = b;
    b = r;
  }
  return b;
}
unsigned long lcm(unsigned long a, unsigned long b)
{
  unsigned long long p = (unsigned long long)a * b;
  return p/gcd(a, b);
}

Sample Output:

232792560

Flowchart:

C Programming Flowchart: Find the smallest positive number that is evenly divisible by all of the numbers from 1 to 20.

C Programming Code Editor:

Contribute your code and comments through Disqus.

Previous C Programming Exercise: Largest palindrome from two 3-digit numbers.
Next C Programming Exercise: Squared sum minus square of 1st 100 numbers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.