
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
Four Divisors in C++
Suppose we have an integer array nums, we have to find the sum of divisors of the integers in that array that have exactly four divisors. So if there is no such integer in the array, then return 0. For example, if the input is [21, 4, 7], then the output will be 32, as 21 has four divisors 1, 3, 7, 21, 4 has three divisors 1, 2, 4, and 7 has two divisors 1 and 7. The answer is the sum of the divisors of the 21 only.
To solve this, we will follow these steps −
Define a method called ok(), this will take x as input
ret := 1 + x, cnt := 2
-
for i := 2, i^2 <= x, increase i by 1
-
if x is divisible by i
increase ret by i, increase cnt by 1
if i is not x/i, then increase cnt by 1, ret := ret + (x/i)
-
return ret, if cnt is 4, otherwise return 0
From the main method
ret := 0, n := size of nums
-
for i in range 0 to n – 1
ret := ret + ok(nums[i])
return ret
Example (C++)
Let us see the following implementation to get better understanding −
#include <bits/stdc++.h> using namespace std; class Solution { public: int ok(int x){ int ret = 1 + x;; int cnt = 2; for(int i = 2; i * i <= x; i++){ if(x % i == 0){ ret += (i); cnt++; if(i != x / i){ cnt++; ret += (x / i); } } } return cnt == 4 ? ret : 0; } int sumFourDivisors(vector<int>& nums) { int ret = 0; int n = nums.size(); for(int i = 0; i < n; i++){ ret += ok(nums[i]); } return ret; } }; main(){ vector<int> v = {21,4,7}; Solution ob; cout << (ob.sumFourDivisors(v)); }
Input
[21,4,7]
Output
32