
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Numbers with Prime Factors 2 and 3 in C++
We are provided two numbers START and END to define a range of numbers. The goal is to find the numbers that have only 2 and 3 as their prime factors and are in the range [START,END].
We will do this by traversing numbers from START to END and for each number we will check if the number is divisible by 2 and 3 only. If divisible, divide it and reduce it. If not, break the loop. In the end if the number is reduced to 1 then it has only 2 and 3 as its factors.
Let’s understand with examples.
Input
START=20 END=25
Output
Numbers with only 2 and 3 as prime factors: 1
Explanation
Prime factors of each number: 20 = 2*2*5 21 = 3*7 22 = 2*11 23 = 1*23 24 = 2*2*2*3 25 = 5*5 Only 24 has 2 and 3 as prime factors.
Input
START=1000 END=1500
Output
Numbers with only 2 and 3 as prime factors: 4
Explanation
1024 1152 1296 1458 are the numbers with only 2 and 3 as prime factors
Approach used in the below program is as follows
We take an integers START and END as range variables.
Function twothreeFactors(int start, int end) takes range variables and returns the count of numbers with 2 and 3 as only prime factors.
Take the initial variable count as 0 for such numbers.
Traverse range of numbers using for loop. i=start to i=end
Now for each number num=i, using while loop check if num%2==0, divide it.
if num%3==0, divide it. If not by both break the while loop
If after the while loop num is 1 then increase count.
At the end of all loops count will have a total number which has only 2 and 4 as prime factors.
Return the count as result.
Example
#include <bits/stdc++.h> using namespace std; int twothreeFactors(int start, int end){ // Start with 2 so that 1 doesn't get counted if (start == 1) { start++; } int count = 0; for (int i = start; i <= end; i++) { int num = i; while(num>1){ // if divisible by 2, divide it by 2 if(num % 2 == 0) { num /= 2; } // if divisible by 3, divide it by 3 else if (num % 3 == 0) { num /= 3; } else //if divisible by neither 2 nor 3 break { break; } } // means only 2 and 3 are factors of num if (num == 1) { count++; } } return count; } int main(){ int START = 10, END = 20; cout <<"Numbers with only 2 and 3 as prime factors:"<< twothreeFactors(START,END); return 0; }
Output
If we run the above code it will generate the following output −
Numbers with only 2 and 3 as prime factors:3