Напишите программу, которая вводит естественное число 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
Статьи
Информатика
Статьи
Последние вопросы
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Облако тегов