C Program to Print all Perfect Numbers Between 1 to N

  • Write a C program to print all perfect numbers between 1 to N using for loop.

Required Knowledge

A perfect number is a positive number, that is equal to sum of its positive divisor.
For Example : 6 is a perfect number as positive factors of 6 are 1, 2 and 3 whose sum is 6.


C program to print all perfect numbers between 1 to N using for loop

#include<stdio.h>
#include<conio.h>
 
int main () {
    int num, i, divSum, counter;
 
    printf("Enter a number\n");
    scanf("%d", &num);
 
    /* Check for every number between 1 to num, 
 whether it is perfect number or not */
    for(counter = 1; counter <= num; counter++){
        /* Find all divisors of a number between 
        1 to num/2 and add it to divSum */
        divSum = 0;
        for (i = 1; i <= counter/2; i++) {
            if (counter % i == 0) {
                divSum += i;
            }
        }
     
        /* Check if Divisor sum is equal to input number */
        if (divSum == counter)
            printf("%d is a Perfect Number\n", counter);
        
    }
    
    getch();
    return 0;
}

Output
Enter a number
500
6 is a Perfect Number
28 is a Perfect Number
496 is a Perfect Number
Write a C program to find product of digits of a number using while loop.
Wap in C to multiply the digits of a number.

Required Knowledge

To multiply digits of a number we have to remove one digit at a time, we can use '/' division and '%' modulus operator. Number%10 will give the least significant digit of the number, we will use it to get one digit of number at a time. To remove last least significant digit from number we will divide number by 10.

Product of digits of 2534 = 2 x 5 x 3 x 4 = 120

Algorithm to find product of digits of a number
  • Get least significant digit of number (number%10) and multiply it to the product variable.
  • Remove least significant digit form number (number = number/10).
  • Repeat above two steps, till number is not equal to zero.

C program to find sum of all even numbers between 1 to N using for loop

#include <stdio.h>
#include <conio.h>  
  
int main() {  
    int num, temp;  
    long productOfDigit = 1;  
  
    /* 
     * Take a number as input from user
     */  
    printf("Enter a Number\n");  
    scanf("%d", &num);  
    temp = num;
    
    while(num != 0){
        /* get the least significant digit(last digit) 
         of number and multiply it to productofDigit */
        productOfDigit *= num % 10;
        /* remove least significant digit(last digit)
         form number */
        num = num/10;
    } 
  
    printf("Product of digits of %d = %ld", temp, productOfDigit);  
  
    getch();
    return 0;  
}

Output
Enter a Number
2436
Product of digits of 2436 = 144
Enter a Number
2222
Product of digits of 2436 = 16

Related Topics
C program to check whether a number is perfect number
C program to check whether a number is magic number
C program to check whether a number is prime or not
C program to check armstrong number
C program to check a number is palindrome or not
C program to convert decimal numbers to binary numbers
C program to make a simple calculator using switch statement
C program to convert temperature from celsius to fahrenheit
C program to print all prime factors of a number
List of all C programs