Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
User177
0 / 0 / 1
Регистрация: 23.01.2013
Сообщений: 41
1

Java2 может ли целое число быть представлено каким-либо произведением цифр, входящих в это число

24.01.2013, 01:05. Просмотров 560. Ответов 2
Метки нет (Все метки)

Разбираю задачу..... Есть код, но некоторые моменты мне не понятны......
Определить функцию для проверки может ли целое число быть представлено каким-либо произведением цифр, входящих в это число. Напечатать такие числа от 100 до 1000. (Например, 135=3*3*3*5).
Метод решения задачи:
Для начала нам надо разобрать данное нам число на цифры. Для этого воспользуемся приведением типов – преобразуем число в строку, разберем на массив символов и преобразуем обратно в массив цифр типа int. После чего отсортируем массив методом пузырьковой сортировки от меньшего к большему, и, методом перебора (отсеяв значения 1 и 0 с помощью условных операторов), будем делить данное число на входящие в него цифры. Если при делении дойдем до ситуации, когда остаток от деления будет равным 0 и число будет равно 1 – число входит в массив чисел, удовлетворяющих условию задачи.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class test6{
    public static void main(String[]arg){
        int tmp,L;
        for (int i=100;i<1000;i++){
            L=i;
            String number;
            number=String.valueOf(i);
            int[]num=new int[3];
            char[]ch=new char[3];
            number.getChars(0,3,ch,0);
            for (int k=0;k<num.length;k++){
                [COLOR="Red"]num[k]=ch[k]-48;[/COLOR]
            }
            for (int k=0;k<num.length-1;k++){if (num[k]>num[k+1]){tmp=num[k];num[k+1]=num[k];num[k]=tmp;}}
            for (int k=0;k<num.length;k++){if (num[k]>1){
                tmp=L%num[k];
                if (tmp==0){while (tmp==0){L=L/num[k];tmp=L%num[k];}}}}
            if (L==1) System.out.println(i);
}
}
}
num[k]=ch[k]-48;-вообще не понимаю, для чего нужна эта строчка, почему отнимаем 48? Очень прошу, объясните пожалуйста))) И если можно комментарии напишите к программе... Буду очень благодарна=)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 01:05
Ответы с готовыми решениями:

Реализуйте:может ли заданное целое число быть представлено в виде суммы квадратов двух целых
/*Реализуйте метод, проверяющий, может ли заданное целое число быть представлено в виде суммы...

Найти максимальное число которое может быть представлено как сумма степеней 2, 3 и 4 простых чисел
Найти максимальное число, меньшее заданного, которое может быть представлено как сумма степеней 2,...

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

Дано натуральное число n, которое может быть представлено суммой чисел 1, 2, 3, 5, 10, 15, 20 и 50. Требуется найти самое короткое представление n
По идеи, нужно разбить число n на сумму чисел и выбрать ту сумму, в которой меньше слагаемых. Но...

Разработать программу, проверяющую, делится ли целое четырехзначное число N нацело на сумму цифр, составляющих это число
Очень нужна помощь,если кому не лень уделить пару минут на решение,огромная благодарность! ...

2
lowercase
212 / 201 / 85
Регистрация: 09.05.2012
Сообщений: 494
24.01.2013, 01:32 2
48 это код символа '0'. так как цифри 0-9 в таблице кодов расположены почереди одина за другой, то есть их коды равны соответсвенно 48(цифра 0)...57(цифра 9),
таким образом чтобы получить цифру(тип int), имея символ(char) цифры нужно вычесть из кода этого символа код ноля.

а вообще я не монимаю. везде куда не глянь в java или с# число разбивают на цифры с помощью строк. зачем?
неужели операции преобразования числа в строку быстрее чем операции целочисельного деления и операции получения остатка от целочисельного деления?

Java
1
2
3
4
5
6
7
8
 
        int x = 65536;
 
        int[]num = new int[5];
        for(int i = 4; i >= 0; i--){
            num[i] = x % 10;
            x /= 10;
        }
1
User177
0 / 0 / 1
Регистрация: 23.01.2013
Сообщений: 41
24.01.2013, 09:55  [ТС] 3
Теперь понятно...Спасибо большое! Я новичок в программировании, поэтому такой метод ввел меня в ступор.Там есть возможность сделать все через методы String, попытаюсь переделать)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 09:55

Определить, является ли заданное число произведением цифр какого либо числа
Во входном файле дано число N - произведение цифр какого либо числа. Надо написать программу,...

2. Дано натуральное число. Найти количество цифр данного числа. Результат в АХ. (Число может быть двухзначным, трехзначным и т.д.)
2. Дано натуральное число. Найти количество цифр данного числа. Результат в АХ. (Число может...

Каким может быть максимальное число строк и столбцов матрицы
Здрасти, функция int** CreateMatrix(int count_row,int count_col) создает двумерный дин. массив, в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru