Skip to main content

C program to find perfect numbers between 1 to n

 Write a C program to find all Perfect numbers between 1 to n. C program to find all perfect numbers between given range. How to generate all perfect numbers between given interval using loop in C programming. Logic to find all perfect numbers in a given range in C programming.

Example

Input

Input upper limit: 100

Output

Perfect numbers between 1 to 100: 6, 28

Required knowledge

Basic C programming, If statement, For loop, Nested loop

Must know – Program to check divisibility.

What is Perfect number?

Perfect number is a positive integer which is equal to the sum of its proper positive divisors.

For example: 6 is the first perfect number
Proper divisors of 6 are 1, 2, 3
Sum of its proper divisors = 1 + 2 + 3 = 6.
Hence 6 is a perfect number.

Logic to find all Perfect number between 1 to n

Step by step descriptive logic to find Perfect numbers from 1 to n.

  1. Input upper limit from user to find Perfect numbers. Store it in a variable say end.
  2. Run a loop from 1 to end, increment 1 in each iteration. The loop structure should look like for(i=1; i<=end; i++).
  3. For each iteration inside loop print the value of i if it is a Perfect number.

Program to find all perfect numbers between 1 to n

/**
 * C program to print all Perfect numbers between 1 to n 
 */

#include <stdio.h>

int main()
{
    int i, j, end, sum;

    /* Input upper limit to print perfect number */
    printf("Enter upper limit: ");
    scanf("%d", &end);

    printf("All Perfect numbers between 1 to %d:\n", end);
    
    /* Iterate from 1 to end */
    for(i=1; i<=end; i++)
    {
        sum = 0;

        /* Check whether the current number i is Perfect number or not */
        for(j=1; j<i; j++)
        {
            if(i % j == 0)
            {
                sum += j;
            }
        }
 
        /* If the current number i is Perfect number */
        if(sum == i)
        {
            printf("%d, ", i);
        }
    }

    return 0;
}

Once, you got the logic to print perfect numbers from 1 to n. You can easily modify the logic to print perfect numbers in given range. I am writing the below program with little modification to print perfect numbers in given range.

Program to generate perfect numbers in given range

/**
 * C program to print all Perfect numbers between 1 to n 
 */

#include <stdio.h>

int main()
{
    int i, j, start, end, sum;

    /* Input lower and upper limit from user */
    printf("Enter lower limit: ");
    scanf("%d", &start);
    printf("Enter upper limit: ");
    scanf("%d", &end);

    printf("All Perfect numbers between %d to %d:\n", start, end);
    
    /* Iterate from start to end */
    for(i=start; i<=end; i++)
    {
        sum = 0;

        /* Check whether the current number i is Perfect number or not */
        for(j=1; j<i; j++)
        {
            if(i % j == 0)
            {
                sum += j;
            }
        }
 
        /* If the current number i is Perfect number */
        if(sum == i)
        {
            printf("%d, ", i);
        }
    }

    return 0;
}

Output

Enter lower limit: 1
Enter upper limit: 1000
All Perfect numbers between 1 to 1000:
6, 28, 496,

Comments

Popular posts from this blog

C program to find prime factors of a number

  Write a C program to input a number from user and find Prime factors of the given number using loop. C program to list all prime factors of a given number. Logic to find prime factors of a number in C programming. Example Input Input any number: 10 Output Prime factors of 10: 2, 5 Required knowledge Basic C programming ,  If statement ,  For loop ,  Nested loop What is Prime factor? Factors of a number  that are  prime numbers  are called as Prime factors of that number. For example: 2 and 5 are the prime factors of 10. Logic to check prime factors of a number Step by step descriptive logic to find prime factors. Input a number from user. Store it in some variable say  num . Run a loop from  2  to  num/2 , increment 1 in each iteration. The loop structure should look like  for(i=2; i<=num/2; i++) . You may think why loop from 2 to  num/2 ? Because prime number starts from 2 and any factor of a number  n  is ...

Questions of C Program

1. Write a C program to find the area of a circle. 2. Write a C program to find the area of a triangle. 3. Write a C program to swap two numbers without temp variable (or a third variable) 4. Write a C program to print ASCII value of the character 5. Write a C program to read a character in uppercase and then print in lowercase. 6. Write a C program to swap two numbers with temp variable 7. Write a C program to calculate the average of two number 8. Write a C program to calculate the simple interest. 9. Write a C program to find the quotient and remainder of two numbers 10.Write a C program that displays the size of every datatype. 1. Write a c program to add two integers and print the result ,inputs must be taken using scanf function. 2. Write a c program to add two float numbers without third variable and print the result ,inputs must be taken using scanf function. 3. Write a c program, to subtract two integers and print the result, inputs must be taken using scanf function. 4. Write...

C program to print all natural numbers from 1 to n using while loop

  Write a C program to enter any number from user and print all natural numbers from 1 to n using while loop. How to print all natural numbers from 1 to n using while loop in C programming. Example Input Input upper limit to print natural numbers: 10 Output Natural numbers from 1 to 10: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Required knowledge Basic C programming , Loop Learn this program using other approaches. Read more - Program to print natural numbers from 1 to n using for loop Program to print natural numbers from 1 to n using recursion Program to print natural numbers using while loop /** * C program to print all natural numbers from 1 to n using while loop */ # include <stdio.h> int main ( ) { int i , end ; /* * Input a number from user */ printf ( "Print all natural numbers from 1 to : " ) ; scanf ( "%d" , & end ) ; /* * Print natural numbers from 1 to end */ i = 1 ; while ( i <= end )...