मुझे ये सभी नंबर मिले, लेकिन मुझे समझ नहीं आ रहा है कि मेरे कोड में, चक्र की दिशा सब कुछ तय करती है जब वह 9999 से 100 तक जाता है तो वह 1000 से कम संख्या नहीं गिनता है और जब चक्र 100 से 9999 तक जाता है तो सब कुछ शुरू से अंत तक काम करता है... कोड जो काम करता है:

public class Main {
    public static void main(String[] args){
        int n  , po = 0, count = 0;
        double arm;
        int[] elems = {0,0,0,0};
        for(int i = 100; i < 9999; i++){
            for( n = i;n >= 1; count++){
                elems[count] = n%10;
                n /= 10;
                po++;
            }
            arm = pow(elems[0],po)+pow(elems[1],po)+pow(elems[2],po)+pow(elems[3],po);
            if(arm == i ){
                System.out.println(i);
            }
            po = 0;
            count = 0;
        }
    }
}

आउटपुट:

153
370
371
407
1634
8208
9474

और कोड जो काम नहीं करता है:

public class Main {
    public static void main(String[] args){
        int n  , po = 0, count = 0;
        double arm;
        int[] elems = {0,0,0,0};
        for(int i = 9999; i > 100; i--){
            for( n = i;n >= 1; count++){
                elems[count] = n%10;
                n /= 10;
                po++;
            }
            arm = pow(elems[0],po)+pow(elems[1],po)+pow(elems[2],po)+pow(elems[3],po);
            if(arm == i ){
                System.out.println(i);
            }
            po = 0;
            count = 0;
        }
    }
}

आउटपुट:

9474
8208
1634

जैसा कि आप देख सकते हैं, अंतर केवल चक्र की दिशा में है ... ऐसा क्यों हो रहा है?

0
RedCape 4 अक्टूबर 2018, 22:51

2 जवाब

सबसे बढ़िया उत्तर

जोड़ा गया: Arrays.fill(elems,0);

 public static void armstrong() {
    int n  , po = 0, count = 0;
    double arm;
    int[] elems = {0,0,0,0};
    for(int i = 9999; i > 100; i--){
        for( n = i;n >= 1; count++){
            elems[count] = n%10;
            n /= 10;
            po++;
        }
        arm = pow(elems[0],po)+pow(elems[1],po)+pow(elems[2],po)+pow(elems[3],po);

        if(arm == i ){
            System.out.println(i);
        }
        //added
        Arrays.fill(elems, 0);
        po = 0;
        count = 0;
    }

}
2
Pandey Amit 4 अक्टूबर 2018, 23:18

सभी elems तत्वों को i < 1000 के लिए अधिलेखित नहीं किया जाता है, इसलिए पिछली सामग्री तब बनी रहती है जब arm = pow(... का मूल्यांकन किया जाता है।

बाहरी for-लूप के प्रत्येक पुनरावृत्ति के लिए elems को भी रीसेट करें।

3
Michael Butscher 4 अक्टूबर 2018, 23:01