1583 - 2 Prim: Difference between revisions
Sinn Erich (talk | contribs) Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar prog... |
|||
(17 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] | Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] | ||
== Cerinţa == | == Cerinţa == | ||
Se | Se citesc de la tastatură '''n''' numere naturale. Să se determine numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr. | ||
== Date de intrare == | == Date de intrare == | ||
Programul | Programul conține pe prima linie numărul '''n''', iar pe a doua linie '''n''' numere naturale din intervalul '''[10,10000]''' separate printr-un spațiu. | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va | Programul va conține numărul de numere care au proprietatea de mai sus. | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr. | |||
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.") | |||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
1 ≤ '''n''' ≤ 10000 | |||
== Exemplul 1 == | == Exemplul 1 == | ||
; | ; Datele de intrare: | ||
: 4 | : Introduceți numărul de numere: | ||
: 4 | |||
: | : Introduceți numerele separate prin spații: | ||
: | :218 433 417 513 | ||
; Datele de ieșire: | |||
: Datele sunt introduse corect. | |||
: 2 | |||
: | |||
; | |||
: | |||
: Datele | |||
: | |||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | #1583 | ||
def | def is_prime(num): | ||
""" | |||
Verifică dacă un număr este prim. | |||
""" | |||
if num < 2: | |||
return False | |||
i | for i in range(2, int(num ** 0.5) + 1): | ||
return | if num % i == 0: | ||
return False | |||
return True | |||
def | def count_prime_numbers(numbers): | ||
""" | |||
for | Calculează numărul de numere prime formate din ultimele două cifre ale numerelor | ||
din lista de numere date. | |||
return | """ | ||
counter = 0 | |||
for num in numbers: | |||
last_two_digits = num % 100 | |||
if is_prime(last_two_digits): | |||
counter += 1 | |||
return counter | |||
def | def get_numbers(n, numbers): | ||
if n < | """ | ||
Transformă lista de numere date ca șir de caractere într-o listă de numere | |||
întregi și verifică dacă numerele respectă restricțiile impuse. | |||
""" | |||
result = [] | |||
for i in range(n): | |||
num = int(numbers[i]) | |||
if not (10 <= num <= 10000): | |||
print("Datele nu corespund restricțiilor impuse.") | |||
exit() | |||
result.append(num) | |||
return result | |||
def validate_input(n): | |||
""" | |||
Verifică dacă valoarea introdusă pentru n respectă | |||
restricția impusă. | |||
""" | |||
if not (1 <= n <= 10000): | |||
print("Datele nu corespund restricțiilor impuse.") | |||
return False | return False | ||
print("Datele sunt introduse corect.") | |||
return True | return True | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = int(input("Introduceți numărul | n = int(input("Introduceți numărul de numere: ")) | ||
if not | |||
if not validate_input(n): | |||
exit() | |||
numbers = input("Introduceți numerele separate prin spații: ").split() | |||
numbers = get_numbers(n, numbers) | |||
count = count_prime_numbers(numbers) | |||
print("Numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr este:", count) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Explicatie cod:''' | |||
Acest cod calculează numărul de numere prime formate din ultimele două cifre ale fiecărui număr dintr-o listă dată de la intrare. | |||
Funcția is_prime(num) primește un număr și returnează True dacă numărul este prim și False altfel. Pentru a verifica dacă un număr num este prim, funcția începe prin a verifica dacă numărul este mai mic decât 2. Dacă acesta este cazul, returnează False, deoarece niciun număr mai mic decât 2 nu poate fi prim. Dacă numărul este mai mare sau egal cu 2, funcția parcurge o buclă for care verifică toate numerele între 2 și radicalul pătrat al numărului. Dacă numărul este divizibil cu oricare dintre aceste numere, funcția returnează False, deoarece acest lucru arată că numărul nu este prim. Dacă bucla se termină fără a returna False, numărul este prim și funcția returnează True. | |||
Funcția get_numbers(n, numbers) primește numărul total de numere și o listă de numere sub formă de șiruri de caractere. Funcția parcurge lista de numere și returnează o nouă listă care conține aceleași numere, dar sub formă de numere întregi. | |||
Funcția count_prime_numbers(numbers) primește o listă de numere întregi și returnează numărul de numere prime formate din ultimele două cifre ale fiecărui număr. Funcția parcurge lista de numere și extrage ultimele două cifre ale fiecărui număr folosind int(str(num)[-2:]), unde num este numărul curent din listă sub formă de întreg. Acest lucru transformă numărul în șir de caractere și apoi îl taie astfel încât să păstreze doar ultimele două cifre, apoi îl transformă înapoi într-un întreg. Funcția apoi apelează is_prime() pentru a verifica dacă aceste ultime două cifre formează un număr prim și adaugă 1 la un contor dacă acest lucru este adevărat. | |||
La final, programul primește de la intrare numărul total de numere și lista de numere sub formă de șiruri de caractere. Apoi, lista este transformată într-o listă de numere întregi cu ajutorul funcției get_numbers(). Această listă este apoi trecută prin funcția count_prime_numbers() pentru a determina numărul de numere prime formate din ultimele două cifre ale fiecărui număr, care este apoi afișat la ieșire. |
Latest revision as of 21:05, 27 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Se citesc de la tastatură n numere naturale. Să se determine numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr.
Date de intrare[edit | edit source]
Programul conține pe prima linie numărul n, iar pe a doua linie n numere naturale din intervalul [10,10000] separate printr-un spațiu.
Date de ieșire[edit | edit source]
Programul va conține numărul de numere care au proprietatea de mai sus.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.")
Restricţii şi precizări[edit | edit source]
1 ≤ n ≤ 10000
Exemplul 1[edit | edit source]
- Datele de intrare
- Introduceți numărul de numere:
- 4
- Introduceți numerele separate prin spații:
- 218 433 417 513
- Datele de ieșire
- Datele sunt introduse corect.
- 2
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1583
def is_prime(num):
""" Verifică dacă un număr este prim. """ if num < 2: return False for i in range(2, int(num ** 0.5) + 1): if num % i == 0: return False return True
def count_prime_numbers(numbers):
""" Calculează numărul de numere prime formate din ultimele două cifre ale numerelor din lista de numere date. """ counter = 0 for num in numbers: last_two_digits = num % 100 if is_prime(last_two_digits): counter += 1 return counter
def get_numbers(n, numbers):
""" Transformă lista de numere date ca șir de caractere într-o listă de numere întregi și verifică dacă numerele respectă restricțiile impuse. """ result = [] for i in range(n): num = int(numbers[i]) if not (10 <= num <= 10000): print("Datele nu corespund restricțiilor impuse.") exit() result.append(num) return result
def validate_input(n):
""" Verifică dacă valoarea introdusă pentru n respectă restricția impusă. """ if not (1 <= n <= 10000): print("Datele nu corespund restricțiilor impuse.") return False print("Datele sunt introduse corect.") return True
if __name__ == '__main__':
n = int(input("Introduceți numărul de numere: "))
if not validate_input(n): exit()
numbers = input("Introduceți numerele separate prin spații: ").split() numbers = get_numbers(n, numbers) count = count_prime_numbers(numbers) print("Numărul de numere prime formate din ultimele 2 cifre ale fiecărui număr este:", count)
</syntaxhighlight>
Explicatie cod: Acest cod calculează numărul de numere prime formate din ultimele două cifre ale fiecărui număr dintr-o listă dată de la intrare.
Funcția is_prime(num) primește un număr și returnează True dacă numărul este prim și False altfel. Pentru a verifica dacă un număr num este prim, funcția începe prin a verifica dacă numărul este mai mic decât 2. Dacă acesta este cazul, returnează False, deoarece niciun număr mai mic decât 2 nu poate fi prim. Dacă numărul este mai mare sau egal cu 2, funcția parcurge o buclă for care verifică toate numerele între 2 și radicalul pătrat al numărului. Dacă numărul este divizibil cu oricare dintre aceste numere, funcția returnează False, deoarece acest lucru arată că numărul nu este prim. Dacă bucla se termină fără a returna False, numărul este prim și funcția returnează True.
Funcția get_numbers(n, numbers) primește numărul total de numere și o listă de numere sub formă de șiruri de caractere. Funcția parcurge lista de numere și returnează o nouă listă care conține aceleași numere, dar sub formă de numere întregi.
Funcția count_prime_numbers(numbers) primește o listă de numere întregi și returnează numărul de numere prime formate din ultimele două cifre ale fiecărui număr. Funcția parcurge lista de numere și extrage ultimele două cifre ale fiecărui număr folosind int(str(num)[-2:]), unde num este numărul curent din listă sub formă de întreg. Acest lucru transformă numărul în șir de caractere și apoi îl taie astfel încât să păstreze doar ultimele două cifre, apoi îl transformă înapoi într-un întreg. Funcția apoi apelează is_prime() pentru a verifica dacă aceste ultime două cifre formează un număr prim și adaugă 1 la un contor dacă acest lucru este adevărat.
La final, programul primește de la intrare numărul total de numere și lista de numere sub formă de șiruri de caractere. Apoi, lista este transformată într-o listă de numere întregi cu ajutorul funcției get_numbers(). Această listă este apoi trecută prin funcția count_prime_numbers() pentru a determina numărul de numere prime formate din ultimele două cifre ale fiecărui număr, care este apoi afișat la ieșire.