# Smallest prime divisor of a number

Given a number N, find the smallest prime divisor of N.

Examples:

Input: 25
Output: 5

Input: 31
Output: 31

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Check if the number is divisible by 2 or not.
• Iterate from i = 3 to sqrt(N) and making a jump of 2.
• If any of the numbers divide N then it is the smallest prime divisor.
• If none of them divide, then N is the answer.

Below is the implementation of the above algorithm:

## C++

 `// C++ program to count the number of ` `// subarrays that having 1 ` `#include ` `using` `namespace` `std; ` ` `  `// Function to find the smallest divisor ` `int` `smallestDivisor(``int` `n) ` `{ ` `    ``// if divisible by 2 ` `    ``if` `(n % 2 == 0) ` `        ``return` `2; ` ` `  `    ``// iterate from 3 to sqrt(n) ` `    ``for` `(``int` `i = 3; i * i <= n; i += 2) { ` `        ``if` `(n % i == 0) ` `            ``return` `i; ` `    ``} ` ` `  `    ``return` `n; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `n = 31; ` `    ``cout << smallestDivisor(n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java  program to count the number of  ` `// subarrays that having 1  ` ` `  `import` `java.io.*; ` ` `  `class` `GFG { ` `// Function to find the smallest divisor  ` `static` `int` `smallestDivisor(``int` `n)  ` `{  ` `    ``// if divisible by 2  ` `    ``if` `(n % ``2` `== ``0``)  ` `        ``return` `2``;  ` ` `  `    ``// iterate from 3 to sqrt(n)  ` `    ``for` `(``int` `i = ``3``; i * i <= n; i += ``2``) {  ` `        ``if` `(n % i == ``0``)  ` `            ``return` `i;  ` `    ``}  ` ` `  `    ``return` `n;  ` `}  ` ` `  `// Driver Code  ` `     `  `    ``public` `static` `void` `main (String[] args) { ` `     `  `        ``int` `n = ``31``;  ` `        ``System.out.println (smallestDivisor(n));  ` `         `  `    ``} ` `} `

## Python3

 `# Python3 program to count the number  ` `# of subarrays that having 1 ` ` `  `# Function to find the smallest divisor ` `def` `smallestDivisor(n): ` ` `  `    ``# if divisible by 2 ` `    ``if` `(n ``%` `2` `=``=` `0``): ` `        ``return` `2``; ` ` `  `    ``# iterate from 3 to sqrt(n) ` `    ``i ``=` `3``;  ` `    ``while``(i ``*` `i <``=` `n): ` `        ``if` `(n ``%` `i ``=``=` `0``): ` `            ``return` `i; ` `        ``i ``+``=` `2``; ` ` `  `    ``return` `n; ` ` `  ` `  `# Driver Code ` `n ``=` `31``; ` `print``(smallestDivisor(n)); ` ` `  `# This code is contributed by mits `

## C#

 `// C# program to count the number  ` `// of subarrays that having 1 ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `// Function to find the ` `// smallest divisor  ` `static` `int` `smallestDivisor(``int` `n)  ` `{  ` `    ``// if divisible by 2  ` `    ``if` `(n % 2 == 0)  ` `        ``return` `2;  ` ` `  `    ``// iterate from 3 to sqrt(n)  ` `    ``for` `(``int` `i = 3; ` `             ``i * i <= n; i += 2)  ` `    ``{  ` `        ``if` `(n % i == 0)  ` `            ``return` `i;  ` `    ``}  ` ` `  `    ``return` `n;  ` `}  ` ` `  `// Driver Code  ` `static` `public` `void` `Main () ` `{ ` `    ``int` `n = 31;  ` `    ``Console.WriteLine(smallestDivisor(n));  ` `} ` `} ` ` `  `// This code is contributed ` `// by Sach_Code `

## PHP

 ` `

Output:

```31
```

How to efficiently find prime factors of all numbers till n?
Please refer Least prime factor of numbers till n

My Personal Notes arrow_drop_up