Find out all Disarium numbers present within a given range

A Number is a Disarium number if the sum of the digits powered with their respective positions is equal to the number itself.

Example:

               Given Number=135
               135⇒1¹+3²+5³=1+9+125=135
               so, 135 is Disarium Number.
                 
                Given Number=120
               120⇒1¹+2²+0³=1+4+0=5
               so, 120 is not a Disarium Number.
                                          
Problem statement:-  Program to Find out all Disarium numbers present within a given range.

Data requirement:-

   Input Data:- range1, range2

   Output Data:- i, range1, range2

   Additional Data:- num, c, rem, sum

Program in C

Here is the source code of the C Program to Find out all Disarium numbers present within a given range.

Code:

//Disarium Number in range
#include<stdio.h>
#include<math.h>
int main()
{
    int range1,range2,i;
    printf("Enter a range:");
    scanf("%d %d",&range1,&range2);
    printf("Disarium Numbers between %d and %d are: ",range1,range2);
    for(i=range1;i<=range2;i++)
    {
    int num=i,c=0;
    while(num!=0)
    {
        num/=10;
        c++;
    }
    num=i;
    int sum=0;
    while(num!=0)
    {
        int rem=num%10;
        sum+=pow(rem,c);
        num/=10;
        c--;
    }
   if(sum==i)
    printf("%d ",i);
}
}

Input/Output:
Enter a range:1                                                                                                                          
100                                                                                                                                           
Disarium Numbers between 1 and 100 are: 1 2 3 4 5 6 7 8 9 89  

Program in C++

Here is the source code of the C++ Program to Find out all Disarium numbers present within a given range.

Code:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int range1,range2,i;
    cout<<"Enter a range:";
    cin>>range1;
    cin>>range2;
    cout<<"Disarium numbers between "<<range1<<" and "<<range2<<" are: ";
    for(i=range1;i<=range2;i++)
    {
    int num=i,c=0;
    while(num!=0)
    {
        num/=10;
        c++;
    }
    num=i;
    int sum=0;
    while(num!=0)
    {
        int rem=num%10;
        sum+=pow(rem,c);
        num/=10;
        c--;
    }
   if(sum==i)
    cout<<i<<" ";
}
}

Input/Output:
Enter a range:100                                                                                                                      
300                                                                                                                                           
Disarium Numbers between 100 and 300 are: 135 175

Program in Java
  
Here is the source code of the Java Program to Find out all Disarium numbers present within a given range.

Code:

import java.util.Scanner;
public class FindDisariumNumbersInRange {
public static void main(String[] args) {
Scanner cs=new Scanner(System.in);
      int range1,range2;
      System.out.println("Enter a range:");
      range1=cs.nextInt();
      range2=cs.nextInt();
      System.out.println("Disarium numbers between "+range1+" and "+range2+" are: ");
      for(int i=range1;i<=range2;i++)
      {
      int num=i,c=0;
        while(num!=0)
        {
            num/=10;
            c++;
        }
        num=i;
        int sum=0;
        while(num!=0)
        {
            int rem=num%10;
            sum+=Math.pow(rem,c);
            num/=10;
            c--;
        }
       if(sum==i)
      System.out.print(i+" ");
      }
      cs.close();
}
}

Input/Output:
Enter a range:
10
1000
Disarium numbers between 10 and 1000 are: 
89 135 175 518 598 

Program in Python
  
Here is the source code of the Program to Find out all Disarium numbers present within a given range.

Code:

import math
print("Enter a range:")
range1=int(input())
range2=int(input())
print("Disarium numbers between ",range1," and ",range2," are: ")
for i in range(range1,range2+1):
    num =i
    c = 0
    while num != 0:
        num //= 10
        c += 1
    num = i
    sum = 0
    while num != 0:
        rem = num % 10
        sum += math.pow(rem, c)
        num //= 10
        c -= 1
    if sum == i:
        print(i,end=" ")

Input/Output:
Enter a range:
500
5000
Disarium numbers between  500  and  5000  are: 
518 598 1306 1676 2427 

More:-

C/C++/Java/Python Practice Question 

Post a Comment

0 Comments