How to resolve the algorithm Perfect numbers step by step in the C# programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Perfect numbers step by step in the C# programming language

Table of Contents

Problem Statement

Write a function which says whether a number is perfect.

A perfect number is a positive integer that is the sum of its proper positive divisors excluding the number itself. Equivalently, a perfect number is a number that is half the sum of all of its positive divisors (including itself).

Note:   The faster   Lucas-Lehmer test   is used to find primes of the form   2n-1,   all known perfect numbers can be derived from these primes using the formula   (2n - 1) × 2n - 1. It is not known if there are any odd perfect numbers (any that exist are larger than 102000). The number of   known   perfect numbers is   51   (as of December, 2018),   and the largest known perfect number contains  49,724,095  decimal digits.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Perfect numbers step by step in the C# programming language

General Overview: This C# code identifies and prints perfect numbers within the range of 1 to 33,550,337. A perfect number is a positive integer whose sum of all its positive proper divisors (excluding itself) equals the number itself.

First Implementation: Main Method:

  • The Main method prints a message indicating that it will find perfect numbers in the specified range.
  • It enters a loop to iterate through all numbers from 0 to 33,550,337.

IsPerfect Method:

  • The IsPerfect method checks if a given number is perfect.
  • It initializes a variable sum to 0.
  • It iterates through all numbers from 1 to the number, excluding the number itself.
  • For each number i, it checks if num is divisible by i (i.e., num % i == 0). If so, it adds i to sum.
  • Finally, it returns if sum is equal to num, indicating that the number is perfect.

Second Implementation: Main Method:

  • Same as the first implementation.

IsPerfect Method:

  • Uses LINQ to simplify the calculation of the sum of proper divisors.
  • It uses the Enumerable.Range method to create a sequence of numbers from 1 to num - 1.
  • It applies the Sum method to the sequence, with a lambda expression that checks if num is divisible by each number n and adds n to the running sum if divisible.
  • If the resulting sum is equal to num, the method returns true to indicate that the number is perfect.

Usage:

  • Both implementations iterate through the entire range of numbers from 1 to 33,550,337.
  • For each number, they calculate the sum of its proper divisors using the IsPerfect method.
  • If the sum is equal to the number, they print the number as a perfect number.
  • The user can interact with the program by pressing any key after the program finishes executing to close the console window.

Source code in the csharp programming language

static void Main(string[] args)
{
	Console.WriteLine("Perfect numbers from 1 to 33550337:");

	for (int x = 0; x < 33550337; x++)
	{
		if (IsPerfect(x))
			Console.WriteLine(x + " is perfect.");
	}

	Console.ReadLine();
}

static bool IsPerfect(int num) 
{
	int sum = 0;
	for (int i = 1; i < num; i++)
	{
		if (num % i == 0)
			sum += i;
	}

	return sum == num ;
}


static void Main(string[] args)
{
	Console.WriteLine("Perfect numbers from 1 to 33550337:");

	for (int x = 0; x < 33550337; x++)
	{
		if (IsPerfect(x))
			Console.WriteLine(x + " is perfect.");
	}

	Console.ReadLine();
}

static bool IsPerfect(int num) 
{
	return Enumerable.Range(1, num - 1).Sum(n => num % n == 0 ? n : 0 ) == num;
}


  

You may also check:How to resolve the algorithm Circles of given radius through two points step by step in the OCaml programming language
You may also check:How to resolve the algorithm Animation step by step in the D programming language
You may also check:How to resolve the algorithm Determine if a string is numeric step by step in the EchoLisp programming language
You may also check:How to resolve the algorithm Sorting algorithms/Strand sort step by step in the PL/I programming language
You may also check:How to resolve the algorithm Xiaolin Wu's line algorithm step by step in the Pascal programming language