Số lượng ước số của n

View as PDF



Author:
Problem type
Points: 100 Time limit: 1.0s Memory limit: 640M Input: stdin Output: stdout

Viết chương trình nhập vào số nguyên \(n\) (\(n\leq 10^9\)). In ra số lượng ước số của \(n\). (Ước số của \(n\) là các số nguyên mà \(n\) chia hết)

Ví dụ: \(n=10\) thì \(4\) ước số: \(1\) \(2\) \(5\) \(10\)

Input

  • Một số nguyên dương \(n\).

Output

  • In ra số lượng ước số của \(n\).

Example

Test 1

Input
10
Output
4

Test 2

Input
36
Output
9

Comments


  • 0
    pa_ldk    5:11 p.m. 11 may, 2024

    include<bits/stdc++.h>

    define ll long long

    using namespace std;
    int main() {
    ll n; cin >> n;
    vector<ll> vt; ll res = 1;
    for(int i = 2;i<=n;i++)
    {
    ll dem=0;
    while(n%i==0)
    {
    n/=i;
    dem++;
    }
    if(dem>0)
    {
    res*=dem+1;
    }
    }
    cout << res;
    return 0;
    }


    • -4
      Rinna1206    11:17 a.m. 29 feb, 2024

      cái nit


      • -1
        caphefacansa    11:03 a.m. 23 feb, 2024

        include<algorithm>

        include <iostream>

        include <vector>

        include <cmath>

        define ll long long

        using namespace std;

        int main() {
        ll n; cin >> n;
        vector<ll> vt; ll res = 1;
        for(int i = 2;i<=n;i++)
        {
        ll dem=0;
        while(n%i==0)
        {
        n/=i;
        dem++;
        }
        if(dem>0)
        {
        res*=dem+1;
        }
        }
        cout << res;
        }


        • 0
          Mochiracvc1    4:14 p.m. 27 jan, 2024

          Python
          B1: Nhập biến n=int... như bth
          B2:tạo biến d=0
          B3: for i... (1,n//2+1):
          B4: xét nếu n%i==0 thì d+=1
          B5:Thụt ra đầu dòng và print(d+1)
          =)))


          • 4
            tk22dangminhduc    12:06 p.m. 2 aug, 2023

            SOLUTION:

            Bài này có 2 phương pháp giải

            Cách 1:
            Duyệt for từ 1 đến sqrt(n) (căn bậc 2), nếu số đó chia hết cho n (hay còn gọi là ước) của n thì +2, nhưng nếu n là một số chính phương thì khi duyệt đến căn bậc 2 của n, chúng ta chỉ +1.

            Cách 2:
            Phuơng pháp này chỉ áp dụng với số > 1
            1: Phân tích n sang thừa số nguyên tố
            2: lấy các số mủ của các thừa số nguyên tố +1
            3: tính tích của dãy số vừa tìm được
            vd : 20 = \(2^2\) * \(5^1\)
            -dãy số mủ số sau khi +1 là (3; 2)
            -tính tích = 3 * 2 = 6
            Vậy kq=6
            hãy kiểm chứng Ư(20) = {1; 2; 4; 5; 10; 20}, kq = 6
            => Dù n là 1 số nguyên tố thì cách này vẫn đúng!

            1 reply

            • 0
              votagiahuy2008    9:55 p.m. 21 jul, 2023

              include <bits/stdc++.h>

              using namespace std;
              int main()
              {
              long long n;
              cin>>n;
              long long d=0;
              for(int i=1; i<=sqrt(n);i++)
              if (n%i==0)
              {
              d++;
              long long j=n/i;
              if(i!=j) d++;
              }
              cout<<d;
              }


              • 0
                tk21nghialt    6:44 p.m. 15 oct, 2021

                Ai giúp mình bài này với. Mình làm mà nó bị "Time Limit Exceeded"


                • -6
                  kienhc    11:06 a.m. 30 jul, 2021

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


                  • -4
                    tula    10:51 p.m. 27 jan, 2021

                    n=int(input())
                    d=0
                    for i in range(1,n+1):
                    if n%i==0:
                    d=d+1
                    print(d)

                    3 replies

                    • 1
                      aminh    8:34 p.m. 6 nov, 2020 edited

                      long long n,i,dem=0;
                      cin>>n;
                      for(i=1;i<=sqrt(n);i++)
                      if(n%i==0) dem=dem+2;
                      cout<<dem;

                      2 replies