# Count numbers in range 1 to N which are divisible by X but not by Y

Given two positive integers X and Y, the task is to count the total numbers in range 1 to N which are divisible by X but not Y.

**Examples:**

Input:x = 2, Y = 3, N = 10Output:4

Numbers divisible by 2 but not 3 are : 2, 4, 8, 10

Input :X = 2, Y = 4, N = 20Output :5

Numbers divisible by 2 but not 4 are : 2, 6, 10, 14, 18

A **Simple Solution** is to count numbers divisible by X but not Y is to loop through 1 to N and counting such number which is divisible by X but not Y.

**Approach**

- For every number in range 1 to N, Increment count if the number is divisible by X but not by Y.
- Print the count.
- In range 1 to N, find
**total numbers divisible by X**and**total numbers divisible by Y**. - Also, Find
**total numbers divisible by either X or Y** - Calculate total number divisible by X but not Y as
**(total number divisible by X or Y) – (total number divisible by Y)**

Below is the implementation of above approach:

## C++

`// C++ implementation of above approach`

`#include <bits/stdc++.h>`

`using`

`namespace`

`std;`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`int`

`count = 0;`

`for`

`(`

`int`

`i = 1; i <= N; i++) {`

`// Check if Number is divisible`

`// by x but not Y`

`// if yes, Increment count`

`if`

`((i % X == 0) && (i % Y != 0))`

`count++;`

`}`

`return`

`count;`

`}`

`// Driver Code`

`int`

`main()`

`{`

`int`

`X = 2, Y = 3, N = 10;`

`cout << countNumbers(X, Y, N);`

`return`

`0;`

`}`

## Java

`// Java implementation of above approach`

`class`

`GFG {`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`static`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`int`

`count =`

`0`

`;`

`for`

`(`

`int`

`i =`

`1`

`; i <= N; i++) {`

`// Check if Number is divisible`

`// by x but not Y`

`// if yes, Increment count`

`if`

`((i % X ==`

`0`

`) && (i % Y !=`

`0`

`))`

`count++;`

`}`

`return`

`count;`

`}`

`// Driver Code`

`public`

`static`

`void`

`main(String[] args)`

`{`

`int`

`X =`

`2`

`, Y =`

`3`

`, N =`

`10`

`;`

`System.out.println(countNumbers(X, Y, N));`

`}`

`}`

## Python3

`# Python3 implementation of above approach`

`# Function to count total numbers divisible`

`# by x but not y in range 1 to N`

`def`

`countNumbers(X, Y, N):`

`count`

`=`

`0`

`;`

`for`

`i`

`in`

`range`

`(`

`1`

`, N`

`+`

`1`

`):`

`# Check if Number is divisible`

`# by x but not Y`

`# if yes, Increment count`

`if`

`((i`

`%`

`X`

`=`

`=`

`0`

`)`

`and`

`(i`

`%`

`Y !`

`=`

`0`

`)):`

`count`

`+`

`=`

`1`

`;`

`return`

`count;`

`# Driver Code`

`X`

`=`

`2`

`;`

`Y`

`=`

`3`

`;`

`N`

`=`

`10`

`;`

`print`

`(countNumbers(X, Y, N));`

`# This code is contributed by mits`

## C#

`// C# implementation of the above approach`

`using`

`System;`

`class`

`GFG {`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`static`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`int`

`count = 0;`

`for`

`(`

`int`

`i = 1; i <= N; i++) {`

`// Check if Number is divisible`

`// by x but not Y`

`// if yes, Increment count`

`if`

`((i % X == 0) && (i % Y != 0))`

`count++;`

`}`

`return`

`count;`

`}`

`// Driver Code`

`public`

`static`

`void`

`Main()`

`{`

`int`

`X = 2, Y = 3, N = 10;`

`Console.WriteLine(countNumbers(X, Y, N));`

`}`

`}`

## PHP

`<?php`

`//PHP implementation of above approach`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`function`

`countNumbers(`

`$X`

`,`

`$Y`

`,`

`$N`

`)`

`{`

`$count`

`= 0;`

`for`

`(`

`$i`

`= 1;`

`$i`

`<=`

`$N`

`;`

`$i`

`++)`

`{`

`// Check if Number is divisible`

`// by x but not Y`

`// if yes, Increment count`

`if`

`((`

`$i`

`%`

`$X`

`== 0) && (`

`$i`

`%`

`$Y`

`!= 0))`

`$count`

`++;`

`}`

`return`

`$count`

`;`

`}`

`// Driver Code`

`$X`

`= 2;`

`$Y`

`= 3;`

`$N`

`= 10;`

`echo`

`(countNumbers(`

`$X`

`,`

`$Y`

`,`

`$N`

`));`

`// This code is contributed by Arnab Kundu`

`?>`

**Output:**4

**Time Complexity : O(N)****Efficient solution:**Below is the implementation of above approach:

## C++

`// C++ implementation of above approach`

`#include <bits/stdc++.h>`

`using`

`namespace`

`std;`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`// Count total number divisible by X`

`int`

`divisibleByX = N / X;`

`// Count total number divisible by Y`

`int`

`divisibleByY = N / Y;`

`// Count total number divisible by either X or Y`

`int`

`LCM = (X * Y) / __gcd(X, Y);`

`int`

`divisibleByLCM = N / LCM;`

`int`

`divisibleByXorY = divisibleByX + divisibleByY`

`- divisibleByLCM;`

`// Count total numbers divisible by X but not Y`

`int`

`divisibleByXnotY = divisibleByXorY`

`- divisibleByY;`

`return`

`divisibleByXnotY;`

`}`

`// Driver Code`

`int`

`main()`

`{`

`int`

`X = 2, Y = 3, N = 10;`

`cout << countNumbers(X, Y, N);`

`return`

`0;`

`}`

## Java

`// Java implementation of above approach`

`class`

`GFG {`

`// Function to calculate GCD`

`static`

`int`

`gcd(`

`int`

`a,`

`int`

`b)`

`{`

`if`

`(b ==`

`0`

`)`

`return`

`a;`

`return`

`gcd(b, a % b);`

`}`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`static`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`// Count total number divisible by X`

`int`

`divisibleByX = N / X;`

`// Count total number divisible by Y`

`int`

`divisibleByY = N / Y;`

`// Count total number divisible by either X or Y`

`int`

`LCM = (X * Y) / gcd(X, Y);`

`int`

`divisibleByLCM = N / LCM;`

`int`

`divisibleByXorY = divisibleByX + divisibleByY`

`- divisibleByLCM;`

`// Count total number divisible by X but not Y`

`int`

`divisibleByXnotY = divisibleByXorY`

`- divisibleByY;`

`return`

`divisibleByXnotY;`

`}`

`// Driver Code`

`public`

`static`

`void`

`main(String[] args)`

`{`

`int`

`X =`

`2`

`, Y =`

`3`

`, N =`

`10`

`;`

`System.out.println(countNumbers(X, Y, N));`

`}`

`}`

## Python3

`# Python 3 implementation of above approach`

`from`

`math`

`import`

`gcd`

`# Function to count total numbers divisible`

`# by x but not y in range 1 to N`

`def`

`countNumbers(X, Y, N):`

`# Count total number divisible by X`

`divisibleByX`

`=`

`int`

`(N`

`/`

`X)`

`# Count total number divisible by Y`

`divisibleByY`

`=`

`int`

`(N`

`/`

`Y)`

`# Count total number divisible`

`# by either X or Y`

`LCM`

`=`

`int`

`((X`

`*`

`Y)`

`/`

`gcd(X, Y))`

`divisibleByLCM`

`=`

`int`

`(N`

`/`

`LCM)`

`divisibleByXorY`

`=`

`(divisibleByX`

`+`

`divisibleByY`

`-`

`divisibleByLCM)`

`# Count total numbers divisible by`

`# X but not Y`

`divisibleByXnotY`

`=`

`(divisibleByXorY`

`-`

`divisibleByY)`

`return`

`divisibleByXnotY`

`# Driver Code`

`if`

`__name__`

`=`

`=`

`'__main__'`

`:`

`X`

`=`

`2`

`Y`

`=`

`3`

`N`

`=`

`10`

`print`

`(countNumbers(X, Y, N))`

`# This code is contributed by`

`# Surendra_Gangwar`

## C#

`// C# implementation of above approach`

`using`

`System;`

`class`

`GFG {`

`// Function to calculate GCD`

`static`

`int`

`gcd(`

`int`

`a,`

`int`

`b)`

`{`

`if`

`(b == 0)`

`return`

`a;`

`return`

`gcd(b, a % b);`

`}`

`// Function to count total numbers divisible by`

`// x but not y in range 1 to N`

`static`

`int`

`countNumbers(`

`int`

`X,`

`int`

`Y,`

`int`

`N)`

`{`

`// Count total number divisible by X`

`int`

`divisibleByX = N / X;`

`// Count total number divisible by Y`

`int`

`divisibleByY = N / Y;`

`// Count total number divisible by either X or Y`

`int`

`LCM = (X * Y) / gcd(X, Y);`

`int`

`divisibleByLCM = N / LCM;`

`int`

`divisibleByXorY = divisibleByX + divisibleByY`

`- divisibleByLCM;`

`// Count total number divisible by X but not Y`

`int`

`divisibleByXnotY = divisibleByXorY`

`- divisibleByY;`

`return`

`divisibleByXnotY;`

`}`

`// Driver Code`

`public`

`static`

`void`

`Main()`

`{`

`int`

`X = 2, Y = 3, N = 10;`

`Console.WriteLine(countNumbers(X, Y, N));`

`}`

`}`

## PHP

`<?php`

`// PHP implementation of above approach`

`function`

`__gcd(`

`$a`

`,`

`$b`

`)`

`{`

`// Everything divides 0`

`if`

`(`

`$a`

`== 0)`

`return`

`$b`

`;`

`if`

`(`

`$b`

`== 0)`

`return`

`$a`

`;`

`// base case`

`if`

`(`

`$a`

`==`

`$b`

`)`

`return`

`$a`

`;`

`// a is greater`

`if`

`(`

`$a`

`>`

`$b`

`)`

`return`

`__gcd(`

`$a`

`-`

`$b`

`,`

`$b`

`);`

`return`

`__gcd(`

`$a`

`,`

`$b`

`-`

`$a`

`);`

`}`

`// Function to count total numbers divisible`

`// by x but not y in range 1 to N`

`function`

`countNumbers(`

`$X`

`,`

`$Y`

`,`

`$N`

`)`

`{`

`// Count total number divisible by X`

`$divisibleByX`

`=`

`$N`

`/`

`$X`

`;`

`// Count total number divisible by Y`

`$divisibleByY`

`=`

`$N`

`/`

`$Y`

`;`

`// Count total number divisible by either X or Y`

`$LCM`

`= (`

`$X`

`*`

`$Y`

`) / __gcd(`

`$X`

`,`

`$Y`

`);`

`$divisibleByLCM`

`=`

`$N`

`/`

`$LCM`

`;`

`$divisibleByXorY`

`=`

`$divisibleByX`

`+`

`$divisibleByY`

`-`

`$divisibleByLCM`

`;`

`// Count total numbers divisible by X but not Y`

`$divisibleByXnotY`

`=`

`$divisibleByXorY`

`-`

`$divisibleByY`

`;`

`return`

`ceil`

`(`

`$divisibleByXnotY`

`);`

`}`

`// Driver Code`

`$X`

`= 2;`

`$Y`

`= 3;`

`$N`

`= 10;`

`echo`

`countNumbers(`

`$X`

`,`

`$Y`

`,`

`$N`

`);`

`// This is code contrubted by inder_verma`

`?>`

**Output:**4

**Time Complexity:**O(1) - In range 1 to N, find