(C++) Для двух натуральных чисел P и Q, меньших 1000000, напишите программу, которая определяет, числа являются взаемнопростимы (не имеют общих делителей, кроме 1). Нужно зделать с ссылками!
Здесь пришлось учитывать положительные и отрицательные числа, т.к. длина строки с отрицательным числом включает в себя и знак минус. Поэтому в некоторых местах программы я добавлю пояснение.
var n,p:integer; s: string; begin write ('Введите число: '); readln (n); if n<0 then n:=-n; // отрицательное число переделываем в положительное, чтобы "длина строки" ниже не получилась больше количества цифр в числе str(n,s); // преобразуем число в строку, чтобы узнать длину числа (количество цифр) if (length(s) mod 2)=0 then n:=n div 10; // проверяем длину числа на четность. так как нам нужны цифры с НЕЧЕТНЫХ мест, убираем из числа последнюю цифру, которая стоит на ЧЕТНОМ месте: p:=1; while n>=1 do begin // организуем цикл ПОКА число не станет меньше единицы (в цикле мы будем отрезать от него по две цифры) p:=p*(n mod 10); // произведение умножаем на последнюю цифру числа (остаток от деления числа на 10) n:=n div 100; // отрезаем от числа 2 последние цифры. (в последней итерации цикла оно примет вид 0,0х, т.е. будет больше 0, но меньше 1) end; writeln; writeln ('Произведение цифр,которые расположены на нечётных позициях, = ',p); end.
Проимер:
Введите число: -2323 Произведение цифр,которые расположены на нечётных позициях, = 4
var
n,p:integer;
s: string;
begin
write ('Введите число: ');
readln (n);
if n<0 then n:=-n; // отрицательное число переделываем в положительное, чтобы "длина строки" ниже не получилась больше количества цифр в числе
str(n,s); // преобразуем число в строку, чтобы узнать длину числа (количество цифр)
if (length(s) mod 2)=0 then n:=n div 10; // проверяем длину числа на четность. так как нам нужны цифры с НЕЧЕТНЫХ мест, убираем из числа последнюю цифру, которая стоит на ЧЕТНОМ месте:
p:=1;
while n>=1 do begin // организуем цикл ПОКА число не станет меньше единицы (в цикле мы будем отрезать от него по две цифры)
p:=p*(n mod 10); // произведение умножаем на последнюю цифру числа (остаток от деления числа на 10)
n:=n div 100; // отрезаем от числа 2 последние цифры. (в последней итерации цикла оно примет вид 0,0х, т.е. будет больше 0, но меньше 1)
end;
writeln;
writeln ('Произведение цифр,которые расположены на нечётных позициях, = ',p);
end.
Проимер:
Введите число: -2323
Произведение цифр,которые расположены на нечётных позициях, = 4
// PascalABC.NET 3.2, сборка 1356 от 04.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadArrReal('Площади:',20);
var u:=ReadArrReal('Урожай:',20);
s.Zip(u,(x,y)->y/x).Println
end.
Пример работы программы
Площади: 3200 2670 1530 3040 2360 2350 1250 4150 4790 2210 4300 2950 3100 4290 3710 3790 2930 2380 4630 3760
Урожай: 55040 84639 56151 107008 83308 58045 40500 46065 148969 24310 46010 97645 102920 50193 115752 142125 82040 29988 170384 90616
17.2 31.7 36.7 35.2 35.3 24.7 32.4 11.1 31.1 11 10.7 33.1 33.2 11.7 31.2 37.5 28 12.6 36.8 24.1
Вот с массивом )))
// PascalABC.NET 3.2, сборка 1356 от 04.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadArrReal('Площади:',20);
var u:=ReadArrReal('Урожай:',20);
var q:=s.Zip(u,(x,y)->y/x).ToArray; q.Println
end.