|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
ProblemW przedziale liczb naturalnych należy wyszukać wszystkie liczby względnie pierwsze (ang. relatively prime integers) z zadaną liczbą p. Liczba naturalna m jest
względnie pierwsza (ang. coprime)
z liczbą naturalną n wtedy i tylko wtedy, gdy
|
Przechodzimy przez kolejne liczby w przedziale . Dla każdej liczby obliczamy algorytmem Euklidesa jej NWD z liczbą p. Jeśli wynikiem będzie 1, to obie liczby są względnie pierwsze, zatem wyprowadzamy tę liczbę z przedziału na wyjście.
K01: Dla i = a, a+1, …, b: ; przechodzimy przez kolejne wykonuj kroki K02…K08 ; liczby z przedziału K02: ax ← i ; zmienne dla algorytmu K03: bx ← p ; Euklidesa K04: Dopóki bx ≠ 0: ; wyznaczamy NWD(i, p) wykonuj kroki K05…K07 K05: t ← bx K06: bx ← ax mod bx K07: ax ← t K08: Jeśli ax = 1, ; NWD(i, p) = 1, zatem i jest to pisz i ; względnie pierwsze z p K09: Zakończ
|
Uwaga: Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich. |
| Program odczytuje z pierwszego
wiersza trzy liczby
|
Pascal// Liczby względnie pierwsze
// Data: 14.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------
program prg;
var a, b, p, ax, bx, i, t : cardinal;
begin
readln(a, b, p);
for i := a to b do
begin
ax := i; bx := p;
while bx <> 0 do
begin
t := bx;
bx := ax mod bx;
ax := t;
end;
if ax = 1 then
write(i, ' ');
end;
writeln;
end. |
// Liczby względnie pierwsze
// Data: 14.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------
#include <iostream>
using namespace std;
int main()
{
unsigned int a, b, p, ax, bx, i, t;
cin >> a >> b >> p;
for(i = a; i <= b; i++)
{
ax = i; bx = p;
while(bx)
{
t = bx;
bx = ax%bx;
ax = t;
}
if(ax == 1)
cout << i << " ";
}
cout << endl;
return 0;
} |
Basic' Liczby względnie pierwsze
' Data: 14.03.2008
' (C)2020 mgr Jerzy Wałaszek
'----------------------------
Dim As Uinteger a, b, p, ax, bx, i, t
Input a, b, p
For i = a To b
ax = i: bx = p
While bx
t = bx
bx = ax Mod bx
ax = t
Wend
If ax = 1 Then _
Print i;" ";
Next
Print
End |
Python (dodatek)# Liczby względnie pierwsze
# Data: 04.02.2024
# (C)2024 mgr Jerzy Wałaszek
#---------------------------
arr = input().split()
a = int(arr[0])
b = int(arr[1])
p = int(arr[2])
for i in range(a, b+1):
ax = i
bx = p
while bx:
t = bx
bx = ax%bx
ax = t
if ax: print(i, end=" ")
print()
|
| Wynik: |
1 100 60 1 7 11 13 17 19 23 29 31 37 41 43 47 49 53 59 61 67 71 73 77 79 83 89 91 97 |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.