2015-08-02 2 views
-3

Мне удалось идентифицировать номер Петерсона, но у меня проблемы с его получением в цикле.Принять диапазон и распечатать все номера Петерсона в заданном диапазоне

import java.util.*; 

public class Special_no 

{ 

     public static void main(String args[]) 
     { 
      Scanner sc=new Scanner(System.in); 
      int n,r,s=0;int i,f,m=0;int a,j=0; 
      System.out.println("Enter the Lower Limit : "); 
      n=sc.nextInt(); 
      System.out.println("Enter the Upper Limit : "); 
      a=sc.nextInt(); 
      for(j=n;j<a;j++) 
      { 
       m=j; 
       do 
       { 
       r=m%10; 
       f=1; 
       for(i=1;i<=r;i++) 
       { 
        f=f*i; 
       } 
       s=s+f; 
       m=m/10; 
       }  
       while(m>0); 
       if(s==j) 
       System.out.print(j+","); 
      } 
     } 
} 

Во время выполнения, после ввода верхнего и нижнего пределов программа принимает его, но он не дает мне никакого выхода.

Как это исправить?

+1

Выполнение некоторых отладочных работ. –

+1

, так как OliverCharlesworth сказал немного отладки, но только для подсказки, что делает 'while (m> 0);' do? почему у вас там есть? –

+0

- это 'while (m> 0);' correct? попробовали с помощью ';'? – Zion

ответ

0

Замените петли для этого:

for(i=a;i<=b;i++) 
    { 
     x=i; 
     s=0; 
     while(x>0) 
     { 
      r=x%10; 
      fact=1; 
      for(k=1;k<=r;k++) 
      { 
       fact=fact*k; 
      } 
      s=s+fact; 
      x=x/10; 
     } 
     if(s==i) 
     System.out.print(i+" "); 
    } 

Вы Добро пожаловать.