Как найти кратные числа в pascal

Просмотров 2.3к. Обновлено 15 октября 2021

В диапазоне натуральных чисел от 2 до 99 определить, сколько из них кратны любому из чисел в диапазоне от 2 до 9.

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

  1. Записать в ячейки массива нули.
  2. Перебирая числа от 2 до 99,
    1. для каждого из них в цикле от 2 до 9
      1. проверять кратность числа внешнего цикла числу внутреннего.
      2. Если второе число делит нацело первое, значит увеличивать на 1 значение в соответствующей ячейке массива.
  3. Вывести индексы и соответствующие им значения из массива.

Pascal

найти количество кратных чисел паскаль


var
a: array[2..9] of byte;
i,j: byte;
begin
for i:=2 to 9 do a[i] := 0;
for i:=2 to 99 do
for j:=2 to 9 do
if i mod j = 0 then
a[j] := a[j] + 1;
for i:=2 to 9 do
writeln(i,' - ', a[i]);
end



2 - 49
3 - 33
4 - 24
5 - 19
6 - 16
7 - 14
8 - 12
9 - 11

Язык Си


#include
main() {
int a[8], i, j;
for (i=0; i<9; i++) a[i] = 0;
for (i=2; i<100; i++)
for (j=2; j<10; j++)
if (i%j == 0) a[j-2] += 1;
for (i=0; i<8; i++)
printf("%d - %dn", i+2, a[i]);
}

Python

найти количество кратных чисел Python


a = [0]*8
for i in range(2,100):
for j in range(2,10):
if i%j == 0:
a[j-2] += 1
i = 0
while i < len(a):
print(i+2, ' - ', a[i])
i += 1



2 - 49
3 - 33
4 - 24
5 - 19
6 - 16
7 - 14
8 - 12
9 - 11

КуМир


алг кратность
нач
цел таб a[2:9]
цел j,i
нц для i от 2 до 9
a[i] := 0
кц
нц для j от 2 до 99
нц для i от 2 до 9
если mod(j,i) = 0 то a[i]:=a[i]+1 все
кц
кц
нц для i от 2 до 9
вывод i, " - ", a[i], нс
кц
кон

Basic-256


dim a(8)
for i=2 to 99
for j=2 to 9
if i%j = 0 then
a[j-2] = a[j-2] + 1
endif
next j
next i

for i=0 to 7
print (i+2) + " - " + a[i]
next i

Ответы с готовыми решениями:

Кратность чисел!
Даны натуральое число N и целые числа а1,а2,а3,…аn.
Выяснить,верно ли что сумма тех чисел аi…

Кратность
Дано 4 числа.Определить сумму тех из них которые кратны 3
Пожалуста помогите!!!!!!!!!!!

проверка на кратность
1. дан двумерный массив чисел. Определить номер строки, состоящей только из элементов, кратных…

Функция проверки на кратность.
работает без ошибок и правильно. нужно сделать проверку на кратность как функцию. Как?

8

как в паскале называется оператор, определяющий кратность числа?

Владлена Стецюк



Ученик

(171),
закрыт



11 лет назад

Лучший ответ

Jurii

Высший разум

(175098)


11 лет назад

В Паскале нет такого оператора!
Для определения кратности целочисленных значений используется оператор получения остатка от целочисленного деления.

Остальные ответы

Рома Хоцын

Мастер

(2075)


11 лет назад

N mod X = 0
когда N делится на X нацело.

Похожие вопросы

Вариант 1

var a,b:longint;
 
function NOD(x,y:longint):longint; { функция поиска наиб. общ. делителя }
begin
   if x<>0 then NOD:=NOD(y mod x,x) else NOD:=y;
end;
 
function NOK(x,y:longint):longint; { функция поиска наим. общ. кратного }
begin
   NOK:=( x div NOD(x,y) ) * y;
end;
 
begin { основная программа }
    readln(a,b);
    writeln( 'НОД этих чисел = ', NOD(a,b) );
    writeln( 'НОК этих чисел = ', NOK(a,b) );
end.

Вариант 2 Переборный алгоритм

var a, b, d: integer;
begin 
    write('Введите два числа: ');
    readln(a, b);
    if a < b then d := a + 1 else d := b + 1;
    {так как мы используем цикл с постусловием, необходимо минимальное значение увеличить на один, 
    иначе цикл repeat, в силу своих конструктивных 
    особенностей, не учтет это минимальное число и 
    не сделает его кандидатом в НОД. Например, 5 и 25.}
    repeat d := d - 1 
    until (a mod d = 0) and (b mod d = 0); 
write('NOD = ', d) 
end.

Вариант 3

var
m,n,r:integer;
label lb;
begin
write('Введите первое число:');readln(m);
write('Введите второе число:');readln(n);
lb:r:=m mod n;
if r=0 then writeln('НОД = ',n)
else
 begin
  m:=n;
  n:=r;
  goto lb;
 end;
end.

Вариант 4 Алгоритм Евклида с вычитанием

Пусть a и b — целые числа, тогда верны следующие утверждения:

Все общие делители пары a и b являются также общими делителями пары a — b, b;

И наоборот, все общие делители пары a — b и b являются также общими делителями пары a и b; НОД(A,  B) = НОД(A — B, B), если A > B; НОД(A, 0) = A.

Доказательство:

Если t — произвольный общий делитель a и b, то он делит и разность a — b. Действительно, из a = t * u и b = t * v следует, что a — b = t * u — t * v = t * (u — v). То есть t — также общий делитель а — b и b. Обратно, если t — произвольный делитель общий делитель a — b и b, то он делит и их сумму a — b + b = a. Это можно доказать аналогично предыдущему. Поэтому t — также общий делитель a и b. Делаем вывод, что множество общих делителей a и b совпадает с множеством делителей a — b и b. В частности, совпадают и наибольшие общие делители этих пар. Наибольшее целое, на которое делится число a, есть само число а. Число 0 делится на любое число. Отсюда наибольший общий делитель а и 0 равен а. Доказанная формула(3) позволяет свести вычисление наибольшего делителя одной пары к вычислению наибольшего общего делителя другой пары, в которой числа уже меньше. Очевидная же формула (4) дает нам понять, когда надо остановиться.

var a, b: integer;
begin 
    write('a = ');
    readln(a);
    write('b = ');
    readln(b);
    while a <> b 
        do if a > b then a := a - b else b := b - a;
    writeln('NOD = ', a);
end.

Вариант 5 Алгоритм Евклида с делением

Пусть a и b — целые числа, а r — остаток от деления a на b. Тогда НОД(a, b) = НОД(b, r). Эта формула также позволяет свести вычисление наибольшего общего делителя одной пары чисел к вычислению наибольшего обшего делителя другой пары чисел.

var a, b: integer;
begin
    write('a = ');
    readln(a);
    write('b = ');
    readln(b);
    while (a <> 0) and (b <> 0) 
        do if a >= b then a := a mod b else b := b mod a;
    write(a + b)
end.

Вариант № 6

Program test2(input,output);
Const N = 5;
Var
       С: array[1..5] of integer;
       A,B:integer;
function HOК (A, В:integer):integer;
begin
        HOK:=A*B/ HOD(A,B);
end;
function НОD(А, В:integer):integer;
var
      X,Y:integer;
begin
X:= A; Y: = В;
1:IF X = Y THEN HOD:=X;
IF X > Y THEN begin
                           X:= X – Y;goto 1;
                           end;
IF Y > X THEN begin
                           Y:= Y – X;goto 1;
                           end;
end;
Begin
FOR i= 1 ТО N READ (C[i]);
A:= С ([l])
FOR i = 1 TO N–1 begin B:=С[i + 1];
                                          A:= HOK(A,B);
                               end;
writeln ("HOK="; A);
end.

Вариант 7

Program N_O_D (Input, Output); 
Var 
A, B: LongInt; 
NOD : LongInt; 
 
Begin
 
WriteLn ('PASCAL: Нахождение Н.О.Д. двух заданных чисел.');
Writeln ('Введите числа, для которых ищется НОД:'); 
Write('Первое число: ');ReadLn (A);
Write('Второе число: ');ReadLn (B); 
 
If (A < B)ThenNOD := A Else NOD := B;
 
While Not( (A mod NOD = 0) and (B mod NOD = 0) ) do 
NOD := NOD - 1;
 
WriteLn ('НОД = ',NOD);
 
ReadLn;
End. 

Program N_O_D (Input, Output); 
Var 
A, B: LongInt; 
NOK, NOD : LongInt; 
 
Begin
 
WriteLn ('PASCAL: Нахождение Н.О.К. двух заданных чисел.');
WriteLn ('Введите числа, для которых ищется НОК:'); 
Write ('Первое число: ');ReadLn (A); 
Write ('Второе число: ');ReadLn (B);
 
If (A < B)ThenNOD := A Else NOD := B;
 
While Not ( (A Mod NOD = 0) And (B Mod NOD = 0) ) Do 
NOD := NOD - 1;
 
A := A Div NOD;
B := B Div NOD; 
NOK := A * B * NOD; 
WriteLn ('НОК = ', NOK); 
 
ReadLn;
End. 

IPB

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas][/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. “FAQ“, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение – только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы – на PM!
6. Одна тема – один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Найти числа, кратные трем, при вводе с клавиатуры, интересная задача, без понятия как решить

сообщение 6.03.2011 16:15

Сообщение
#1

Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: nadja

Репутация: -  0  +



привет всем! вот задача на паскаль
Составить программу нахождения количества чисел кратных трем из шести вводимых с клавиатуры.
интересно что решение требуется БЕЗ МАССИВА с циклом фор.
помогите , или идею дайте как это сделать, пожалуйста!
вот как решила я с массивом

var a:array [1..6] of real;
i,k:integer;
begin
for i:=1 to 6 do
begin
write('введите ',i,' элемент массива');
readln(a[i]);
end;
k:=0;
for i:=1 to 6 do if trunc(a[i]) mod 3=0
then
k:=k+1;
write('количество чисел кратных трем :',k);
readln;
end.

жду ваших гениальных идей!

Сообщение отредактировано: Lapp – 6.03.2011 17:14

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

volvo

сообщение 6.03.2011 16:30

Сообщение
#2

Гость



Не запоминать числа, а сразу после ввода проверять на кратность трем:

var
X, i, k : integer;
begin
k := 0;
for i := 1 to 6 do
begin
write ('введите ',i,'-е число');
readln (X);
if X mod 3 = 0 then k := k + 1;
end;
write ('количество чисел кратных трем :', k);
readln;
end.

 К началу страницы 

+ Ответить 

nadja yak

сообщение 6.03.2011 16:53

Сообщение
#3

Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: nadja

Репутация: -  0  +



volvo
спасибо вам огромное! вы такой умный!!!

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

what is gabapentin prescribed fo

сообщение 8.12.2021 6:19

Сообщение
#4

Гость



Novo

 К началу страницы 

+ Ответить 

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)

Пользователей: 0

500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают

Связь с администрацией: bu_gen в домене octagram.name

Добавить комментарий