Trang chủ Tin Học Lớp 3 Ở chương trình toán lớp 6 ta đã học 2 loại số (số nguyên tố, hợp số): Một số tự...
Câu hỏi :

Ở chương trình toán lớp 6 ta đã học 2 loại số (số nguyên tố, hợp số): Một số tự nhiên lớn hơn 1 là số nguyên tố khi nó chỉ có 2 ước số là số 1 và chính nó. Một số tự nhiên là hợp số nếu số đó viết được thành tích của một cặp số tự nhiên là ước của số đó (trừ số 1 và chính nó). Cho số nguyên dương a. Em hãy đếm xem số a có bao nhiêu cặp (r1; r2) thỏa mãn a = r1 x r2 và 1 <rı ≤ r2 < a; r1, Γ2 € Ν* Giải thích: Số 16 có các ước tự nhiên là: 1; 2; 4; 8; 16 ta thấy 1 x 16 = 16 (loại) 2 x 8 = 16 (lấy) 4 x 4 = 16 (lấy) Vậy số 16 có 2 cặp hợp số là (2; 8), (4; 4).
LƯU Ý :A<=10^18
             chạy tối đa 1s

Lời giải 1 :

from math import sqrt, ceil
def sieve(maxn):
    isPrime = [True]*(maxn + 1)
    isPrime[0] = False
    isPrime[1] = False
    i = 2
    while i*i <= maxn:
        if isPrime[i]:
            j = i*i
            while j <= maxn:
                isPrime[j] = False
                j += i
        i += 1
    primes = []
    for i in range(2, maxn + 1):
        if isPrime[i]:
            primes.append(i)
    return primes
def test(a, n, k, m):
    mod = pow(a, m, n)
    if mod == 1 or mod == n - 1:
        return True
    for l in range(1, k):
        mod = (mod*mod) % n
        if mod == n - 1:
            return True
    return False
def isPrime(n):
    if n in [2,3,5,7,11,13,17,19,23,29,31,37]:
        return True
    elif n < 37:
        return False
    k = 0
    m = n - 1
    while m % 2 == 0:
        m //= 2
        k += 1
    checkset = [2,3,5,7,11,13,17,19,23,29,31,37]
    for a in checkset:
        if not test(a, n, k, m):
            return False
    return True
n = int(input())
primes = sieve(10**6)
res = 1
for p in primes:
    if p**3 > n:
        break
    cnt = 0
    while n % p == 0:
        n //= p
        cnt += 1
    res *= cnt + 1
if isPrime(n):
    res *= 2
else:
    squareRoot = int(sqrt(n))
    if squareRoot*squareRoot == n and isPrime(squareRoot):
        res *= 3
    elif n != 1:
        res *= 4
print(ceil((res - 2) / 2))

Lời giải 2 :

(r1; r2) thỏa mãn a = r1 x r2 và 1 <rı r2 < a; r1, Γ2 Ν* .

nên Số 16 có các ước tự nhiên là: 1; 2; 4; 8; 16

16 = 16 (loại) 2 x 8 = 16 (lấy) 4

x 4 = 16

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 3

Lớp 3 - Năm thứ ba ở cấp tiểu học, áp lực học tập bắt đầu hình thành nhưng chúng ta vẫn còn ở độ tuổi ăn, tuổi chơi. Hãy biết cân đối giữa học và chơi, luôn giữ sự hào hứng trong học tập nhé!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK