1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
1

Найти числа Амстронга в заданном диапазоне

24.10.2017, 11:51. Показов 3737. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Натуральное число из n цифр является число Армстронга, если
сумма его цифр возведенных в n-ую степень равна самому числу.
Получите все эти числа, состоящие из трех и четырех цифр (пример
1³ + 5³ + 3³ = 153).
Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.company;
class Main {
    public static void main(String[] args)
    {
        int a,b,sum=0,f=0;
        for(int i=100;i<10000;i++)
        {
            for (a=i;a>1;a=a/10){
                f++;
            }
            while (i>1){
                b=(int)Math.pow(i%10,f);
                sum=sum+b;
            }
            if(sum==i){
                System.out.print(i);
        }
        }
 
    }
}
Что я сделал не так ?
компилятор либо дооолго ничего не отвечает либо выдаёт :exited with non-zero status
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2017, 11:51
Ответы с готовыми решениями:

Найти простые числа в заданном диапазоне
помогите пожалуйста написать программку...я все уже тут посмотрела, никак не могу реализовать её ...

Найти простые числа в заданном диапазоне (циклы)
Найти простые числа в диапазоне от 2 до 1000 цикл в цикле с помощью циклов for

Найти все простые числа в заданном диапазоне
Найти все простые числа в промежутке между натуральными числами а и b (а &gt; 2000, b - а ≥ 20)

Найти все простые числа в заданном диапазоне
Не так давно начал изучать С и столкнулся с проблемой. Не понимаю почему программа не работает так...

7
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
24.10.2017, 12:11 2

Не по теме:

while (i>1){
b=(int)Math.pow(i%10,f);
sum=sum+b;
}


когда закончит выполняться этот цикл?
0
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
24.10.2017, 12:25  [ТС] 3
Ну по идеи когда i станет меньше 1 .Забыл дописать деление на 10
Вот что вышло
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.company;
class Main {
    public static void main(String[] args)
    {
        int a,b,c,sum=0,f=0;
        for(int i=100;i<10000;i++)
        {
            for (a=i;a>1;a=a/10){
                f++;
            }
            c=i;
            while (c>1){
                b=(int)Math.pow(c%10,f);
                sum=sum+b;
                c=c/10;
            }
            if(sum==i){
                System.out.print(i);
        }
        }
 
    }
}
Но это все равно не работает =(
0
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
24.10.2017, 12:27 4
иди на youtube, в поиске пиши %IDE_name% debugging tutroial.
Смотри, отлаживай.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
24.10.2017, 13:11 5
Лучший ответ Сообщение было отмечено Dobriy_Bobr как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void main(String[] args)
    {
        int a,b,c;
        for(int i=100;i<10000;i++)
        {
            int sum=0, f=0;
            for (a=i;a>1;a=a/10){
                f++;
            }
            c=i;
            while (c>1){
                b=(int)Math.pow(c%10,f);
                sum=sum+b;
                c=c/10;
            }
            if(sum==i){
                System.out.print(i);
        }
        }
 
    }
1
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
24.10.2017, 16:48  [ТС] 6
Спасибо огромное
Я что то и не замечал что сумма и степень не обнуляются....-_-
А условия ,я тоже подправил ,а то там не все числа находились =)
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,155
26.10.2017, 13:42 7
Или так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private static long getNumsOfDigitInPower(int numForSplit, int lengthNum) {
        int split = numForSplit;
        long sumOfPowrs = 0;
        for (int i = lengthNum; i >= 0; i--) {
            int tmp = (int)(split/Math.pow(10,i));
            sumOfPowrs += (long)Math.pow(tmp,lengthNum);
            split %= (int)(Math.pow(10,i));
        }
        return sumOfPowrs;
    }
 
    public static void main(String[] args) {
        for (int i = 100; i < 10_000_000; i++) {
            int p = (int)Math.log10(i) + 1;
            if (i == getNumsOfDigitInPower(i, p))
                System.out.println(i);
        }
    }
Результат работы
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315
0
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,155
26.10.2017, 13:43 8
Или так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private static long getNumsOfDigitInPower(int numForSplit, int lengthNum) {
        int split = numForSplit;
        long sumOfPowrs = 0;
        for (int i = lengthNum; i >= 0; i--) {
            int tmp = (int)(split/Math.pow(10,i));
            sumOfPowrs += (long)Math.pow(tmp,lengthNum);
            split %= (int)(Math.pow(10,i));
        }
        return sumOfPowrs;
    }
 
    public static void main(String[] args) {
        for (int i = 100; i < 10_000_000; i++) {
            int p = (int)Math.log10(i) + 1;
            if (i == getNumsOfDigitInPower(i, p))
                System.out.println(i);
        }
    }
Результат работы
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2017, 13:43
Помогаю со студенческими работами здесь

Найти все простые числа, лежащие в заданном диапазоне
Задача: Найти все простые числа, лежащие в заданном диапазоне. Простые числа – это числа больше 1...

Найти числа фибоначчи в заданном диапазоне методом итерации
Спасайте ребят, в общем нужно найти все числа фибоначчи в заданном диапазоне методом иттерации и...

Найти все минимальные значения в заданном диапазоне, удалить эти числа и найти новое минимальное значение
Здравствуйте дорогие пользователи нужна срочно помощь на экселе Дан ряд-диапазон чисел. Найти...

Найти все простые числа в заданном диапазоне и вывести их на экран
Доброго времени суток! Есть задачка, есть кривое решение. :) Суть задачки такова: найти все...

Найти простые числа в заданном диапазоне с помощью решета Эратосфена
Задача: вывести простые числа в диапозоне от А до В. ( 2 ≤ А и ≤ В ≤ 100000 )...

Найти все числа Амстронга от 1 до k
Натуральное число, в записи которого n цифр, называется числом Амстронга, если сумма его цифр,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru