Bài tập  /  Bài đang cần trả lời

Teddy có một dãy các số tự nhiên và muốn kiểm tra xem chúng có phải là những số tí hon hay không. Hãy giúp Teddy kiểm tra xem có bao nhiêu số tí hon trong dãy của bạn ấy nhé!

----- Nội dung dịch tự động từ ảnh -----
Teddy là một người rất thích khám phá và tìm hiểu những điều thú vị về các con số. Điều đó
giúp cậu luôn cảm thấy vui vẻ và yêu thích chúng hơn. Với mỗi số tự nhiên, anh bạn gọi các “ước
thực sự” của nó là những ước số tự nhiên nhỏ hơn số đó. Chẳng hạn 3 là một “ước thực sự” của 6.
Thật đáng thương, số 1 chẳng có ước thực sự nào cả . Teddy cũng gọi một số là “số tí hon” nếu nó
nhỏ hơn tổng tất cả các ước thực sự của nó. Chẳng hạn ta có 40 là một số tí hon, vì 40 nhỏ hơn tổng
các ước thực sự của nó: 1+2+4+5+8+10+ 20 = 50.
Teddy có một dãy các số tự nhiên và muốn kiểm tra xem chúng có phải là những số tí hon hay không.
Hãy giúp Teddy kiểm tra xem có bao nhiêu số tí hon trong dãy của bạn ấy nhé!
1 Xem trả lời
Hỏi chi tiết
164
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giúp Teddy kiểm tra xem có bao nhiêu số tí hon trong dãy số tự nhiên của bạn ấy, chúng ta cần làm theo các bước sau:

1. **Xác định các ước thực sự của một số tự nhiên**: Các ước thực sự của một số tự nhiên là các số tự nhiên nhỏ hơn số đó và chia hết cho số đó.

2. **Tính tổng các ước thực sự**: Tính tổng của tất cả các ước thực sự của số đó.

3. **Kiểm tra điều kiện số tí hon**: Một số được gọi là số tí hon nếu nó nhỏ hơn tổng các ước thực sự của nó.

4. **Đếm số tí hon**: Đếm số lượng các số trong dãy thỏa mãn điều kiện là số tí hon.

Dưới đây là một đoạn mã Python để thực hiện các bước trên:

```python
def uoc_thuc_su(n):
uoc = []
for i in range(1, n):
if n % i == 0:
uoc.append(i)
return uoc

def tong_uoc_thuc_su(n):
return sum(uoc_thuc_su(n))

def la_so_ti_hon(n):
return n < tong_uoc_thuc_su(n)

def dem_so_ti_hon(day_so):
dem = 0
for so in day_so:
if la_so_ti_hon(so):
dem += 1
return dem

# Ví dụ dãy số
day_so = [12, 18, 20, 40, 6, 28, 1]

# Đếm số tí hon trong dãy
so_ti_hon = dem_so_ti_hon(day_so)
print("Số lượng số tí hon trong dãy là:", so_ti_hon)
```

Trong đoạn mã trên:
- Hàm `uoc_thuc_su(n)` trả về danh sách các ước thực sự của số `n`.
- Hàm `tong_uoc_thuc_su(n)` tính tổng các ước thực sự của số `n`.
- Hàm `la_so_ti_hon(n)` kiểm tra xem số `n` có phải là số tí hon hay không.
- Hàm `dem_so_ti_hon(day_so)` đếm số lượng số tí hon trong dãy số `day_so`.

Bạn có thể thay đổi giá trị của `day_so` thành dãy số tự nhiên mà Teddy muốn kiểm tra.
1
0
DDT
22/07 15:49:48
+5đ tặng
#include <bits/stdc++.h>
#define __SHI__ signed main()
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define INF (int)1e18
#define vi vector<int>
#define vii vector<int,int>
#define MAXN (int)1e6 + 8
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FOD(i, a, b) for (int i = a; i >= b; --i)
#define FORR(i, a, b, c) for (int i = a; i <= b; i += c)
#define endl "\n"
#define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
using namespace std;
int d[MAXN];
void sieve()
{
 FOR(i, 2, MAXN) d[i] = 1;
  FOR(i, 2, trunc(sqrt(MAXN)))
    FORR(j, i * i, MAXN, i)
    {
      d[j] += i;
      if (i *i != j) d[j] += (j / i);
    }
}
__SHI__
{
  fastio;
  sieve();
  int n; cin >> n;
  int a[n + 3], cnt = 0;
  FOR(i, 1, n)
  {
    cin >> a[i];
    if (d[a[i]] > a[i]) ++cnt;
  }
  cout << cnt;
  return 0;
}

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×