How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the C programming language

Published on 7 June 2024 03:52 AM
#C

How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the C programming language

Table of Contents

Problem Statement

These define three classifications of positive integers based on their   proper divisors. Let   P(n)   be the sum of the proper divisors of   n   where the proper divisors are all positive divisors of   n   other than   n   itself.

6   has proper divisors of   1,   2,   and   3. 1 + 2 + 3 = 6,   so   6   is classed as a perfect number.

Calculate how many of the integers   1   to   20,000   (inclusive) are in each of the three classes. Show the results here.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the C programming language

This C program counts the number of deficient, perfect, and abundant numbers between 1 and 20000.

  • A deficient number is a positive integer whose sum of proper divisors (positive factors excluding the number itself) is less than the number.

  • A perfect number is a positive integer whose sum of proper divisors is equal to the number.

  • An abundant number is a positive integer whose sum of proper divisors is greater than the number.

Source code in the c programming language

#include<stdio.h>
#define de 0
#define pe 1
#define ab 2

int main(){
	int sum = 0, i, j;
	int try_max = 0;
	//1 is deficient by default and can add it deficient list
	int   count_list[3] = {1,0,0};
	for(i=2; i <= 20000; i++){
		//Set maximum to check for proper division
		try_max = i/2;
		//1 is in all proper division number
		sum = 1;
		for(j=2; j<try_max; j++){
			//Check for proper division
			if (i % j)
				continue; //Pass if not proper division
			//Set new maximum for divisibility check
			try_max = i/j;
			//Add j to sum
			sum += j;
			if (j != try_max)
				sum += try_max;
		}
		//Categorize summation
		if (sum < i){
			count_list[de]++;
			continue;
		}
		if (sum > i){
			count_list[ab]++;
			continue;
		}
		count_list[pe]++;
	}
	printf("\nThere are %d deficient," ,count_list[de]);
	printf(" %d perfect," ,count_list[pe]);
	printf(" %d abundant numbers between 1 and 20000.\n" ,count_list[ab]);
return 0;
}


  

You may also check:How to resolve the algorithm Cyclops numbers step by step in the Sidef programming language
You may also check:How to resolve the algorithm Hello world/Line printer step by step in the Scala programming language
You may also check:How to resolve the algorithm Integer sequence step by step in the Lua programming language
You may also check:How to resolve the algorithm Integer sequence step by step in the Objeck programming language
You may also check:How to resolve the algorithm Active object step by step in the FreeBASIC programming language