Cho một số n, chúng ta phải kiểm tra xem tổng các chữ số của nó có chia cho số n hay không. Để tìm ra chúng ta phải tính tổng tất cả các số bắt đầu từ hàng đơn vị và sau đó chia số với tổng cuối cùng.
Giống như chúng ta có một số “521” vì vậy chúng ta phải tìm tổng của chữ số đó sẽ là “5 + 2 + 1 =8” nhưng 521 không chia hết cho 8 mà không để lại bất kỳ phần dư nào.
Hãy lấy một ví dụ khác “60” trong đó “6 + 0 =6” có thể chia 60 và sẽ không để lại bất kỳ phần dư nào.
Ví dụ
Input: 55 Output: No Explanation: 5+5 = 10; 55 not divisible by 10 Input: 12 Output: Yes Explanation: 1+2 = 3; 12 is divisible by 3
Phương pháp được sử dụng bên dưới như sau -
Để giải quyết vấn đề này, chúng ta phải lấy từng chữ số từ đầu vào và tìm tổng của mỗi chữ số của một số, sau đó kiểm tra xem nó có đang chia số hay không.
- Nhận thông tin đầu vào
- Lấy từng số từ vị trí đơn vị bằng cách sử dụng và thêm nó vào một biến tổng ban đầu phải bằng 0
- Chia đầu vào với tổng của một số.
- Trả lại kết quả.
Thuật toán
In function int isDivisible(long int num) Step 1-> Declare and initialize temp = num, sum = 0 Step 2-> Loop While num Declare and initialize k as num % 10 Set sum as sum + k Set num as num / 10 End Loop Step 3-> If temp % sum == 0 then, Return 1 Step 4-> Return 0 End function In main() Step 1-> Declare and initialize num as 55 Step 2-> If isDivisible(num) then, Print "yes " Step 3-> Else Print "no "
Ví dụ
#include <stdio.h> // This function will check // whether the given number is divisible // by sum of its digits int isDivisible(long int num) { long int temp = num; // Find sum of digits int sum = 0; while (num) { int k = num % 10; sum = sum + k; num = num / 10; } // check if sum of digits divides num if (temp % sum == 0) return 1; return 0; } int main() { long int num = 55; if(isDivisible(num)) printf("yes\n"); else printf("no\n"); return 0; }
Đầu ra
Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
No