Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 16

Как проверить делимость большого числа на 3?

12.12.2013, 20:40. Показов 5555. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задачка заключается в том чтобы узнать делится ли на 3 без остатка число указанное как параметр командной строки. Я сделал скрипт который работает, но до определенного числа. Например с числом в 999999999999999999999999 уже тупит и говорит что не делится.
Знаю что bash не создан для математических операции, поэтому хочется узнать как будет правильнее написать скрипт.

Ниже привожу свою реализацию:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
n=$@
sum=0
until [ "$n" -eq 0 ]
do
echo $n
let "a=n%10"
let "sum=sum+a"
let "n=n/10"
done
let "r=sum%3"
if [ "$r" -eq 0 ]
then
echo "Число делится на 3"
else
echo "Число не делится на 3"
fi
echo "Сумма цифр = $sum"
echo "Остаток = $r"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2013, 20:40
Ответы с готовыми решениями:

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

Проверить делимость числа на три
Число делиться на 3,если сумма его цифр делиться на 3 .Проверить этот признак на примере заданного трёхзначного числа

Проверить делимость трехзначного числа на 3
Как известно, число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3. Проверить этот признак на примере вводимого...

3
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.12.2013, 21:25
Code
1
2
3
[guest@localhost ~]$ echo "999999999999999999999999 % 3" | bc
0
[guest@localhost ~]$
0
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 16
13.12.2013, 15:04  [ТС]
Сделал через bc. Проблема осталась. В задании обязательно сказано что нужно проверить сумму цифр(Число делится на три, если сумма его цифр делится на три).

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
 
n=$@
sum=0
while [ $n -gt 0 ];
do
    ((sum += n%10))
    ((n /= 10))
done
r=`echo "$sum % 3" | bc`
if [ "$r" -eq 0 ]
then
echo "Hopm"
else
echo "He o4eHb"
fi
echo "Sum = $sum"
echo "OcTaToK = $r"

Code
1
2
3
4
5
~$ ./myscript2.sh 99999999999999999999999999999999999
./myscript2.sh: line 5: [: 99999999999999999999999999999999999: integer expression expected
Hopm
Sum = 0
OcTaToK = 0
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.12.2013, 15:37
Цитата Сообщение от Hellston Посмотреть сообщение
Bash
1
n=$@
Bash
1
n=$1
Bash
1
2
3
4
5
6
7
n="99999999999999999999999999999999999"
s=0
while [ "$n" ]; do
    ((s += ${n:0:1}))
    n=${n:1:${#n}-1}
done
echo $s: $((s % 3 == 0))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2013, 15:37
Помогаю со студенческими работами здесь

Проверить делимость заданного числа на 3
Проверить делимость заданного числа на 3

Найти цифру числа, проверить делимость
Приветствую Вас уважаемые форумчане, прошу вашей помощи в решении данного примерчика, ибо чайник: 1.Дано натуральное число: • найти...

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

Проверить делимость на 3 целого числа, введенного с клавиатуры
Помогите решить задачу Написать программу, проверяющую делимость на 3 целого числа, введенного с клавиатуры. Предусмотреть случай ввода...

Целочисленная арифметика. Проверить делимость заданного числа на 11
Для делимости числа на 11 необходимо, чтобы разность между суммой цифр, стоящих на четных местах, и суммой цифр, стоящих на нечетных...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru