Tin học số thân thiết

noobboy

Học sinh mới
Thành viên
13 Tháng chín 2020
40
6
6
16
Nghệ An
Trường THCS Đặng Thai Mai
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Một cặp số được gọi là thân thiết nếu số này bằng tổng tất cả các ước thực sự của số kia và ngược lại.
VD:
220 và 284 là cặp số thân thiết vì tổng các ước số của 220 là: 1+2+4+5+10+11+20+22+44+55+110=284 và tổng các ước số của 284 là 1+2+4+71+142=220.
Yêu cầu: Hãy viết chương trình kiểm tra xem 2 số nhập vào có phải là số thân thiết hay không. Nếu phải thì in ra 'YES', ngược lại in ra 'NO'.
Dữ liệu: Một dòng ghi 2 số nguyên a, b (0<a,b<=106).
Kết quả: In ra YES nếu a, b là số thân thiết và in ra NO nếu ngược lại.
cái này mình thử làm ma sai ai sửa giúp đc ko?
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,c,d,i;
c=0;
d=0;
cin>>a>>b;
for (i=1;i<=a-1;i=i+1)
{
if (a%i==0)
c=c+i;
}
for (i=1;i<=b-1;i=i+1)
{
if (b%i==0)
d=d+i;
}
if ((a=d) and (b=c))
cout<<"YES";
else
cout<<"NO";
}
 

System32

Học sinh chăm học
Thành viên
25 Tháng chín 2018
343
348
101
Hà Nội
THPT Marie Curie
Một cặp số được gọi là thân thiết nếu số này bằng tổng tất cả các ước thực sự của số kia và ngược lại.
VD:
220 và 284 là cặp số thân thiết vì tổng các ước số của 220 là: 1+2+4+5+10+11+20+22+44+55+110=284 và tổng các ước số của 284 là 1+2+4+71+142=220.
Yêu cầu: Hãy viết chương trình kiểm tra xem 2 số nhập vào có phải là số thân thiết hay không. Nếu phải thì in ra 'YES', ngược lại in ra 'NO'.
Dữ liệu: Một dòng ghi 2 số nguyên a, b (0<a,b<=106).
Kết quả: In ra YES nếu a, b là số thân thiết và in ra NO nếu ngược lại.
cái này mình thử làm ma sai ai sửa giúp đc ko?
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,c,d,i;
c=0;
d=0;
cin>>a>>b;
for (i=1;i<=a-1;i=i+1)
{
if (a%i==0)
c=c+i;
}
for (i=1;i<=b-1;i=i+1)
{
if (b%i==0)
d=d+i;
}
if ((a=d) and (b=c))
cout<<"YES";
else
cout<<"NO";
}
C++
Mã:
#include <iostream>
#include <cmath>
using namespace std;

long int sum_of_factor(long int n) {
    long int total = 0;
    for (int i = 2; i <= floor(sqrt(n)); i++) {
        if (n % i == 0) {
            if (i * i == n) {
                total += i;
            }
            else {
                total += (i + floor(n / i));
            }
        }
    }
    return total + 1;
}

int main()
{
    long int a = 0, b = 0;
    cin >> a >> b;
    if (a == sum_of_factor(b) and b == sum_of_factor(a)) {
        cout << "YES";
    }
    else {
        cout << "NO";
    }
    return 0;
}
Ké thêm Python
Mã:
import math

def sum_of_factor(n):
    total = 0
    for i in range(2, int(math.sqrt(n))):
        if n % i == 0:
            total = total + i + n // i if i**2 != n else total + i
    return total + 1

a, b = map(int, input().split())
print("YES" if a == sum_of_factor(b) and b == sum_of_factor(a) else "NO")
 
Top Bottom