Напишите программу, которая вводит естественное число N и выводит на экран
Напишите программку, которая вводит естественное число N и выводит на экран все натуральные числа, не превосходящие N и делящиеся на каждую из своих цифр.
Задать свой вопрос2 ответа
Вячеслав
// PascalABC.NET 3.2, сборка 1367 от 20.12.2016
// Внимание! Если программа не работает, обновите версию!
function NOK(a,b:integer):integer;
begin
if a=b then Result:=a
else begin
var c:=a*b;
repeat
if agt;b then a:=a-b else b:=b-a;
until a=b;
Result:=c div a
end
end;
begin
var n:=ReadInteger('N=');
var L:=new Listlt;integergt;;
var m:=n;
while mgt;0 do begin
var d:=m mod 10;
L.Add(d);
m:=m div 10
end;
var a:=L.Where(x-gt;xlt;gt;0).Distinct.ToArray;
var k:=a[0];
if a.Lengthgt;1 then
for var i:=1 to a.Length-1 do k:=NOK(k,a[i]);
Range(k,n,k).Println;
end.
Пример
N= 227
14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224
Как это работает?
Если число делится на каждое из нескольких чисел, то оно делится и на НОД этих чисел, Функция НОД дозволяет отыскать НОД пары чисел, а её применение несколько раз позволит найти НОД для нужного комплекта чисел.
Создаем объект типа "перечень целых" и цифра за цифрой помещаем туда числа, совпадающие с цифрами данного числа n. Затем просматриваем список и все уникальные элементы, за исключением нуля, заносим в массив а. Дальше вычисляем НОД для всех частей приобретенного массива.
Понятно, что первым в последовательности искомых чисел будет стоять НОД, а дальше пойдут числа, которые будут увеличиваться каждый раз на НОД, пока не достигнут n.
// Внимание! Если программа не работает, обновите версию!
function NOK(a,b:integer):integer;
begin
if a=b then Result:=a
else begin
var c:=a*b;
repeat
if agt;b then a:=a-b else b:=b-a;
until a=b;
Result:=c div a
end
end;
begin
var n:=ReadInteger('N=');
var L:=new Listlt;integergt;;
var m:=n;
while mgt;0 do begin
var d:=m mod 10;
L.Add(d);
m:=m div 10
end;
var a:=L.Where(x-gt;xlt;gt;0).Distinct.ToArray;
var k:=a[0];
if a.Lengthgt;1 then
for var i:=1 to a.Length-1 do k:=NOK(k,a[i]);
Range(k,n,k).Println;
end.
Пример
N= 227
14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224
Как это работает?
Если число делится на каждое из нескольких чисел, то оно делится и на НОД этих чисел, Функция НОД дозволяет отыскать НОД пары чисел, а её применение несколько раз позволит найти НОД для нужного комплекта чисел.
Создаем объект типа "перечень целых" и цифра за цифрой помещаем туда числа, совпадающие с цифрами данного числа n. Затем просматриваем список и все уникальные элементы, за исключением нуля, заносим в массив а. Дальше вычисляем НОД для всех частей приобретенного массива.
Понятно, что первым в последовательности искомых чисел будет стоять НОД, а дальше пойдут числа, которые будут увеличиваться каждый раз на НОД, пока не достигнут n.
Игорян Оренбург
ОТДЕЛ Задание+;
ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Размен\", Приём;
ПЕР
N, сч: ЦЕЛ;
Задачка Делится_на_числа(число: ЦЕЛ): КЛЮЧ;
ПЕР
ч: ЦЕЛ;
УКАЗ
ч := число;
ПОКА ч gt; 0 ВЫП
ЕСЛИ число ОСТАТОК (ч ОСТАТОК 10) 0 ТО
ВОЗВРАТ ОТКЛ
КОН;
ч := ч ДЕЛИТЬ 10
КОН;
ВОЗВРАТ ВКЛ
КОН Делится_на_числа;
УКАЗ
N := Приём.Число();
ОТ сч := 1 ДО N ВЫП
ЕСЛИ Делится_на_цифры(сч) ТО
Вывод.ЧЦел("^%d", сч, 0, 0, 0)
КОН
КОН
КОН Задание.
ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Размен\", Приём;
ПЕР
N, сч: ЦЕЛ;
Задачка Делится_на_числа(число: ЦЕЛ): КЛЮЧ;
ПЕР
ч: ЦЕЛ;
УКАЗ
ч := число;
ПОКА ч gt; 0 ВЫП
ЕСЛИ число ОСТАТОК (ч ОСТАТОК 10) 0 ТО
ВОЗВРАТ ОТКЛ
КОН;
ч := ч ДЕЛИТЬ 10
КОН;
ВОЗВРАТ ВКЛ
КОН Делится_на_числа;
УКАЗ
N := Приём.Число();
ОТ сч := 1 ДО N ВЫП
ЕСЛИ Делится_на_цифры(сч) ТО
Вывод.ЧЦел("^%d", сч, 0, 0, 0)
КОН
КОН
КОН Задание.
Виктор Нечипайло
а можно это как то записать, как программку?
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных
Разные вопросы.
Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей
Математика.
Определить предложения какие они по цели высказывания и по интонации
Русский язык.
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
эссе на тему какое образование дается в каждой семье
Қазақ тiлi.
Put the verb in brackets into the Present Indefinite.
1The Volga ,
Английский язык.
Сколько стоит коктейль молочный? Точную цену надо?
Математика.
Составить рассказ Из чего складывался культ монарха помазанника Божьего?
История.
Облако тегов