Điểm:
100
Thời gian:
1.0s
Bộ nhớ:
640M
Input:
bàn phím
Output:
màn hình
Số nguyên dương \(p\) gọi là ước số chung của \(n\) 𝑣à \(m\) khi \(m\) 𝑣à \(n\) cùng chia hết cho \(p\).
Viết chương trình nhập vào một số nguyên dương \(n,m\) (\(n,m \leq 10^{7}\)).
Hãy in ra tất cả các ước số chung của \(n\) 𝑣à \(m\).
Input
- Nhập \(2\) số nguyên dương \(n,m\).
Output
- In ra các ước số chung của chúng.
Example
Test 1
Input
54 72
Output
1 2 3 6 9 18
Bình luận
import math
Hàm tính GCD của hai số a và b
def gcd(a, b):
while b:
a, b = b, a % b
return a
Nhập dữ liệu
n, m = map(int, input().split())
Tính GCD của n và m
g = gcd(n, m)
Tìm và in tất cả các ước số của GCD
result = []
for i in range(1, int(math.sqrt(g)) + 1):
if g % i == 0:
result.append(i)
if i != g // i: # Tránh in lại ước số lớn bằng ước số nhỏ
result.append(g // i)
Sắp xếp kết quả theo thứ tự tăng dần
result.sort()
In kết quả
print(" ".join(map(str, result)))
include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(){
ll n,m;
cin>>n>>m;
ll mx=0;
if (m>n) {
mx=m;
}else{
if (m<n){
mx=n;
}
}
for (int i=1;i<=mx;i++){
if ((m%i==0)&&(n%i==0)){
cout<<i<<" ";
}
}
return 0;
}
code bang c++ cho ai can nha(code hoi nqu, chi mang tinh chat tham khao)
cde đay nha
n,m = map(int, input() . split())
i = 1
while i <=min(n,m) :
if n% i ==0 and m%i ==0:
print(i,end=" ")
i+=1
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
import math
a, b = map(int, input().split())
c = []
for i in range(1, min(a, b) + 1):
if a % i == 0 and b % i == 0:
c.append(i)
print(" ".join(map(str,c)))
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
đề bảo là in ra tất cả ước chung chứ có nói là phải sắp xếp các ước từ nhỏ đến lớn đâu, mất một lần WA :((
Bài này bộ test nhỏ quá, đề nghị gia tăng độ khó bộ test nha admin.
Spoiler Alert
Hint 1
Hint 2
Hint 3
Reference