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


  • 1
    vietnammuonnam_mvn    6:21 p.m. 27 Tháng 8, 2024 chỉnh sửa 3

    Code cho ai ko bt làm:
    def prime_factorization(n):
    factors = []
    count = 0

    # Phân tích số nguyên tố 2
    while n % 2 == 0:
        factors.append(2)
        n //= 2
        count += 1
    
    # Phân tích các số nguyên tố lẻ
    for i in range(3, int(n**0.5) + 1, 2):
        while n % i == 0:
            factors.append(i)
            n //= i
            count += 1
    
    # Nếu số nguyên tố còn lại là một số nguyên tố lớn hơn 2
    if n > 2:
        factors.append(n)
        count += 1
    
    return factors
    

    def count_divisors(factors):
    from collections import Counter
    factor_count = Counter(factors)
    num_divisors = 1
    for count in factor_count.values():
    num_divisors *= (count + 1)
    return num_divisors

    def main():
    import sys
    input = sys.stdin.read
    n = int(input().strip())

    factors = prime_factorization(n)
    factor_string = '*'.join(map(str, factors))
    num_divisors = count_divisors(factors)
    
    print(factor_string)
    print(num_divisors)
    

    if name == "main":
    main()

    • 8 bình luận nữa