Hello, I am having trouble getting the second part to work which is to calculate
ID: 3882731 • Letter: H
Question
Hello, I am having trouble getting the second part to work which is to calculate the count of divisors for every number from 1 to n-1. I thought making a function for the first part (finding the divisor count for any number n) would help since it's the same logic but I am not sure where to proceed. If someone could help me write the second function/part I would greatly appreciate it!
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
#include <sstream> // stringstream
using std::cout; using std::cin; using std::endl; using namespace std;
int divisor_count_function (int n){
int divisor_count=0;
for (long i=1; i<=n; i++){
if (n % i == 0)
divisor_count+=1;
}
return divisor_count;
}
int main () {
int user_int=0;
int divisor_count=0;
int integer_count=1;
cin >> user_int;
int y= divisor_count_function(user_int);
int x= divisor_count_function(integer_count);
for(long j=1; integer_count <= user_int-1; j++)
x= divisor_count_function(integer_count);
if(x<y)
integer_count+=1;
if(x>y)
cout << user_int<< " " << integer_count<<" " << x <<endl;
return 1;
}
Programming Project 02 This assignment is worth 10 points and must be completed and turned in before 11:59 on Monday, September 18th, 2017. Assignment Overview This assignment will exercise your ability to utilize control statements (while, for, if) for C+t Background We are going to look at highly composite numbers https://en wikipedia.org/wiki/Highly_composite number. A highly composite number is calculated in the following way. For the positive integer n . We calculate the count of divisors, numbers that divide evenly into n without remainder . We also calculate the count of divisors for every number from 1 to n-1 We say that n is highly composite if it has a count of divisors greater than the count of divisors of any of the integers 1 to n-l The Wikipedia page gives a list of highly composite numbers of different orders. The order of the numbers lists the next element in the sequence of integers that increases its count of divisors. The column d(n) gives the count of divisors. For example, 12 is a highly composite number. Its divisors are: 1,2, 3, 4, 6, 12. It has the order 5 (5th in the series from 1 that increase its divisor count). No number 1-11 has the same or more divisors than 12 Another example, 20 is not highly composite. It has as its divisors 1, 2, 4, 5, 10, 20. The first number from 1 to 20 that has 6 divisors is the number 12, as we just saw Project Description / Specification Input: Input is a single, positive integer that is 1 or greater Output for each test case will be If the input is 0 or less, then the word "Error" is printed and processing ends If no error, then you must determine if the input is highly composite If it is highly composite, print "True", a space, the input number, a space, and the count of divisors. For 12, the output would be True Ifit is not highly composite, print "False", a space, the input number, a space, the first number in the sequence 1 to input that has the same number of divisors, a space, and the count of the smaller number's divisors. For 20, the output would be False 20 12 6 on a single line. 20 has 6 divisors (1, 2,4, 5, 10, 20) but 12 was the first number in the sequence 1 to 20 with 6 divisors. o 12 6 on a single line o Requirements 1. As mentioned, any input number from the test case is not an integer> 1 prints "Error". Though the requirements also mention that it should be an integer, we are not yet capable of testing for that. Deliverables proj02.cpp your source code solution (remember to include your section, the date, project number and comments)Explanation / Answer
// C++ implementation of Naive method to print all
// divisors
#include <bits/stdc++.h>
// function to print the divisors
void printDivisors(int n)
{
for (int i=1;i<=n;i++)
if (n%i==0)
printf("%d ",i);
}
/* Driver program to test above function */
int main()
{
printf("The divisors of 100 are: n");
printDivisors(100);
return 0;
}
____________________________________________________________
// A Better (than Naive) Solution to find all divisiors
#include <bits/stdc++.h>
// Function to print the divisors
void printDivisors(int n)
{
// Note that this loop runs till square root
for (int i=1; i<=sqrt(n)+1; i++)
{
if (n%i==0)
{
// If divisors are equal, print only one
if (n/i == i)
printf("%d ", i);
else // Otherwise print both
printf("%d %d ", i, n/i);
}
}
}
/* Driver program to test above function */
int main()
{
printf("The divisors of 100 are: n");
printDivisors(100);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.