Largest number in [ 2 , 3 , . . n ] which is co |  ; Returns true if i is co - prime with numbers in set [ 2 , 3 , ... m ] ; Running the loop till square root of n to reduce the time complexity from n ; Find the minimum of square root of n and m to run the loop until the smaller one ; Check from 2 to min ( m , sqrt ( n ) ) ; Function to find the largest number less than n which is Co - prime with all numbers from 2 to m ; Iterating from n to m + 1 to find the number ; checking every number for the given conditions ; The first number which satisfy the conditions is the answer ; If there is no number which satisfy the conditions , then print number does not exist . ; Driver Program
#include <bits/stdc++.h> NEW_LINE using namespace std ; bool isValid ( long long int i , long long int m ) { long long int sq_i = sqrt ( i ) ; long long int sq = min ( m , sq_i ) ; for ( long long int j = 2 ; j <= sq ; j ++ ) if ( i % j == 0 ) return false ; return true ; } void findLargestNum ( long long int n , long long int m ) { for ( long long int i = n ; i > m ; i -- ) { if ( isValid ( i , m ) ) { cout << i << ' ' ; return ; } } cout << " Number ▁ Doesn ' t ▁ Exists STRNEWLINE " ; } int main ( ) { long long int n = 16 , m = 3 ; findLargestNum ( n , m ) ; return 0 ; }