Given a range [low..high], print the smallest twin numbers in given range (low and high inclusive). Two numbers are twins if they are primes and there difference is 2.
Input: low = 10, high = 100 Output: Smallest twins in given range: (11, 13) Both 11 and 13 are prime numbers and difference between them is two, therefore twins. And these are the smallest twins in [10..100] Input: low = 50, high = 100 Output: Smallest twins in given range: (59, 61)
A Simple Solution is to start to start from low and for every number x check if x and x + 2 are primes are not. Here x varies from low to high-2.
An Efficient Solution is to use Sieve of Eratosthenes
1) Create a boolean array "prime[0..high]" and initialize all entries in it as true. A value in prime[i] will finally be false if i is not a prime number, else true. 2) Run a loop from p = 2 to high. a) If prime[p] is true, then p is prime. [See this] b) Mark all multiples of p as not prime in prime. 3) Run a loop from low to high and print the first twins using prime built in step 2.
Below is the implementation of above idea.
Smallest twins in given range: (11, 13)
Thanks to Utkarsh Trivedi for suggesting this solution.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Find the largest twins in given range
- Find kth smallest number in range [1, n] when all the odd numbers are deleted
- Count all the numbers in a range with smallest factor as K
- Find Kth smallest value for b such that a + b = a | b
- Find smallest number K such that K % p = 0 and q % K = 0
- Find smallest values of x and y such that ax - by = 0
- Find the kth smallest number with sum of digits as m
- Given a number, find the next smallest palindrome
- Find smallest number n such that n XOR n+1 equals to given k.
- Find smallest permutation of given number
- Find the smallest number X such that X! contains at least Y trailing zeros.
- Find the k-th smallest divisor of a natural number N
- Find Nth smallest number that is divisible by 100 exactly K times
- Find smallest positive number Y such that Bitwise AND of X and Y is Zero
- Program to find the smallest element among three elements