In: Computer Science
In this example you are allowed to use from the C standard library only functions for input and output (e.g. printf(), scanf())
Complete the following functions using C programming language:
A positive integer number is said to be a perfect number if its positive factors, including 1 (but not the number itself), sum to the number. For example, 6 is a perfect number because 6=1+2+3. Complete the int Q6(intQ6_input, int perfect[])function that determines all perfect numbers smaller than or equal to some integer Q6_input(Q6_input> 1).
Note: Assume that x and y are two positive integers. Then x is a factor of y if the remainder of the division of y by x is 0. For instance, 5 is a factor of 15, but not of 36.
For example: if Q6_inputis 10 then the only perfect number you will find is 6. Accordingly, perfect[0] should be equal 6 and the function should return 1 as your count.
Raw_code:
#include<stdio.h> // including stdio.h header for scanf
and printf functions
// perfect_num function for checking whether input number is
perfect number or not
// if input is perfect returns number otherwise returns 0
int perfect_num(int number){
// temporary variable for stroing sum of factors
int temp_num = 0;
// for loop for dividing the number from 1 through number-1
for (int i = 1; i <number; i++){
// if ther number is perfectly divisible
if (number % i == 0)
// incrementing the temp_num with factor
temp_num += i;
}
// if statement for checking input number equals sum of
factors
if (number == temp_num)
// if true returns input number
return number;
// else returns 0
else return 0;
}
// Q6 function takes an integer and integers array as input and
returns an integer(count of perfect numbers)
int Q6(int Q6_input, int perfect[]){
// temporary variables declarations for storing perfect numbers
count, index of array and
// return value of perfect_num function
int temp= 0, count =0;
// checking whether the input number is greather than 1
if (Q6_input > 1){
// for loop for iterating over the numbers upto to the given
range
for (int i = 2; i <= Q6_input; i++){
// calling perfect_num on each number and storing return value in
temp variable
temp = perfect_num(i);
// if return values not equals to 0
//if true (perfect number)
if (temp){
//assigning the perfect number into the array
perfect[count] = temp;
// incrementing array index and count of perfect numbers
count++;
}
}
// returning count of perfect numbers
return count;
}
else
printf("Invalid input!\n");
}
// main function
int main(){
// perfect is an array of 50 integers
int perfect[50];
// input variable to store user input
int input;
//askig user to enter input through printf function
printf("Enter the number : ");
// taking input through scanf function
scanf("%d", &input);
// calling Q6 function by passing input and perfect array as
arguments
int count = Q6(input, perfect);
// printing count of perfect numbers
printf("perfect numbers count : %d \n", count);
// printing list of perfect numbers
printf("The numbers are : ");
// iterating over array for printing perfect numbers
for (int i = 0; i < count; i++){
printf("%d\t", perfect[i]);
}
}