Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
4139 - triprime
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Enunţ== Un număr se numește triprim dacă este produsul a trei numere prime distincte. Exemple de numere triprime: 30 = 2 × 3 × 5, 42 = 2 × 3 × 7, 231 = 3 × 7 × 11. Exemple de numere care nu sunt triprime: 77 = 7 × 11 (prea puține numere prime în produs), 3003 = 3 × 7 × 11 × 13 (prea multe numere prime în produs), 18 = 2 × 3 × 3 (numerele prime nu sunt distincte), 10241 = 7 × 7 × 11 × 19 (prea multe numere prime în produs). ==Cerința== Date fiind numerele A și B, să se afișeze numărul de numere triprime din intervalul [A, B] (inclusiv A și B). ==Date de intrare== Fișierul de intrare triprime.in conține pe prima linie două numere naturale A și B, despărțite printr-un singur spațiu. ==Date de ieșire== Fișierul de ieșire triprime.out va conține numărul de numere triprime din intervalul [A, B]. ==Restricții și precizări== *1 ≤ A ≤ B ≤ 390.000.000 *Pentru 18 puncte, 1 ≤ B ≤ 1.500.000 *Pentru 6 puncte, 1.500.000 < B ≤ 2.500.000 *Pentru 20 puncte, 2.500.000 < B ≤ 4.500.000 *Pentru 31 puncte, 4.500.000 < B ≤ 35.000.000 *Pentru 25 puncte, nu există alte restricții ==Exemplul 1== ;triprime.in :1 50 ;triprime.out :2 ==Explicație== Sunt două numere triprime de la 1 la 50: 30 = 2 × 3 × 5 și 42 = 2 × 3 × 7. ==Exemplul 2== ;triprime.in :10 5 ;triprime.out :Datele sunt invalide ==Rezolvare== <syntaxhighlight lang="python" line> #4139 triprime def sieve_of_eratosthenes(n): primes = [True] * (n + 1) primes[0], primes[1] = False, False p = 2 while p * p <= n: if primes[p] == True: for i in range(p * p, n + 1, p): primes[i] = False p += 1 return [i for i in range(n + 1) if primes[i]] def count_triprimes_in_interval(A, B): primes = sieve_of_eratosthenes(B) count = 0 for num in range(A, B + 1): prime_factors = [p for p in primes if num % p == 0] if len(prime_factors) == 3: count += 1 return count def is_valid_input(A, B): if not (1 <= A <= B <= 390_000_000): return False return True def main(): with open("triprime.in", "r") as f: A, B = map(int, f.readline().split()) if not is_valid_input(A, B): with open("triprime.out", "w") as f: f.write("Datele sunt invalide") return triprime_count = count_triprimes_in_interval(A, B) with open("triprime.out", "w") as f: f.write(str(triprime_count)) if __name__ == "__main__": main() </syntaxhighlight>
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width