Phân tích thừa số nguyên tố

Xem PDF

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho số nguyên dương \(N\).

Yêu cầu: Hãy phân tích \(N\) thành thừa số nguyên tố và đếm ước số của \(N\).

Input

  • Gồm một dòng duy nhất chứa số nguyên dương \(N\).

Output

  • Dòng thứ nhất ghi phân tích thừa số của \(N\) dưới dạng \(a * b * c * d\), với \(a, b, c, d\) là các thừa số nguyên tố của \(N\).
  • Dòng thứ hai ghi số lượng ước số của \(N\).

Constraints

  • \(N\leq 2.10^9\)

Example

Test 1

Input
10 
Output
2*5
4

Test 2

Input
100 
Output
2*2*5*5
9

Bình luận


  • 0
    nguyenquocphonng    6:03 p.m. 29 Tháng 8, 2024

    def prime_factors(n):
    """Trả về một danh sách các thừa số nguyên tố của n và số mũ của chúng"""
    i = 2
    factors = []
    while i * i <= n:
    count = 0
    while (n % i) == 0:
    n //= i
    count += 1
    if count > 0:
    factors.append((i, count))
    i += 1
    if n > 1:
    factors.append((n, 1))
    return factors

    def count_divisors(factors):
    """Tính số lượng ước số dựa trên thừa số nguyên tố"""
    count = 1
    for _, exp in factors:
    count *= (exp + 1)
    return count

    def main():
    import sys
    input = sys.stdin.read
    N = int(input().strip())
    sai rồi bạn ê
    # Phân tích thừa số nguyên tố
    factors = prime_factors(N)

    # Xuất kết quả phân tích thừa số nguyên tố
    factor_strings = []
    for base, exp in factors:
        factor_strings.extend([str(base)] * exp)
    
    print('*'.join(factor_strings))
    
    # Tính số lượng ước số
    divisors_count = count_divisors(factors)
    print(divisors_count)
    

    if name == "main":
    main()

    • 8 bình luận nữa