Số hoàn hảo

View as PDF



Author:
Problem types
Points: 100 Time limit: 0.5s Memory limit: 640M Input: stdin Output: stdout

Số hoàn hảo là số mà tổng các ước của nó bằng \(2\) lần chính nó.

Ví dụ: \(6\) là số hoàn hảo vì \(6\) có tổng ước là \(1+2+3+6=12 = 2\) lần số \(6\).

Yêu cầu: Viết chương trình nhập vào số nguyên \(n\). In ra chữ YES nếu \(n\) là số hoàn hảo, ngược lại ghi chữ NO

Input

  • Một số nguyên dương \(n\)(\(n\leq 10^{12}\)).

Output

  • In ra chữ YES nếu \(n\) là s ố hoàn hảo, ngược lại ghi chữ NO.

Example

Test 1

Input
6
Output
YES

Test 2

Input
36
Output
NO

Comments


  • 0
    blinh    12:53 a.m. 28 sep, 2024
    note

    1 số được gọi là số hoàn hảo khi số đó được biểu thị bằng công thức: 2^(p-1)×(2^p-1), với p là các số nguyên tố: 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607,..., khi đó các số nguyên tố được biểu thị dưới dạng 2^p-1 với p là các số nguyên tố như trên thì ta được một số nguyên tố Mersenne, ví dụ: khi p=3 ta được số nguyên tố Mersenne là 2³-1=7 và khi đó số hoàn hảo tương ứng là 2^(3-1)×(2³-1)=2^(3-1)×7=28


    • 2
      khai434343    8:45 a.m. 3 jun, 2024 edited

      http://www.lqdoj.edu.vn/submission_source_file/17173790802c83ff3a32.sb3
      scratch
      ai scratch thì upvote nha, ko phải scratch thì tải link rồi vào scratch ấn new project rồi Load from your computer nha


      • -6
        bachtl2023    7:26 p.m. 14 mar, 2024

        This comment is hidden due to too much negative feedback. Click here to view it.

        1 reply

        • 0
          Avocadorable    7:33 p.m. 23 feb, 2024
          import math
          
          def is_perfect_number(n):
              if n <= 0:
                  return "NO"
              sum_of_divisors = 1
              for i in range(2, int(math.sqrt(n)) + 1):
                  if n % i == 0:
                      if i == n / i:
                          sum_of_divisors += i
                      else:
                          sum_of_divisors += i + (n / i)
              if sum_of_divisors == n:
                  return "YES"
              else:
                  return "NO"
          
          num = int(input())
          print(is_perfect_number(num))
          

          • 1
            peter    6:47 a.m. 20 feb, 2024

            import math
            n = int(input())
            sqrt_n = int(math.sqrt(n))
            t = 0
            for i in range(2, sqrt_n + 1):
            if n % i == 0:
            t += i + n // i
            if sqrt_n * sqrt_n == n:
            t -= sqrt_n
            t += 1 # Bổ sung ước 1
            if t == n:
            print('YES')
            else:
            print('NO')
            code đúng nè


            • 0
              tranthanh05012011    1:56 p.m. 6 aug, 2023

              Mong Thầy xử lí ạ!

              1 reply

              • -1
                AKhoi    6:51 p.m. 27 jul, 2023

                import math

                n = int(input())
                sqrt_n = int(math.sqrt(n))
                t = 0

                for i in range(2, sqrt_n + 1):
                if n % i == 0:
                t += i + n // i

                if sqrt_n * sqrt_n == n:
                t -= sqrt_n

                t += 1 # Bổ sung ước 1

                if t == n:
                print('YES')
                else:
                print('NO')


                • -14
                  trikien_    9:18 p.m. 10 apr, 2023

                  This comment is hidden due to too much negative feedback. Click here to view it.

                  1 reply

                  • 0
                    lian11spt    11:49 a.m. 3 jan, 2023

                    q


                    • 0
                      DangMinhBaoKhang0913    5:32 p.m. 23 dec, 2022

                      ai giup mik bai nay v

                      • 4 more comments