ให้ตัวเลข n เราต้องตรวจสอบว่าผลรวมของหลักหารตัวเลข n หรือไม่ ในการหาคำตอบ เราต้องรวมตัวเลขทั้งหมดโดยเริ่มจากหลักหน่วย แล้วหารตัวเลขด้วยผลรวมสุดท้าย
เช่นเดียวกับที่เรามีตัวเลข “521” ดังนั้นเราจึงต้องหาผลรวมของหลักที่จะเป็น “5 + 2 + 1 =8” แต่ 521 หารด้วย 8 ไม่ลงตัวโดยไม่เหลือเศษใดๆ
ลองมาอีกตัวอย่างหนึ่ง “60” โดยที่ “6+0 =6” ซึ่งหาร 60 ได้และไม่เหลือเศษใดๆ
ตัวอย่าง
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
แนวทางที่ใช้ด้านล่างมีดังนี้ −
ในการแก้ปัญหานี้ เราต้องดึงข้อมูลแต่ละหลักจากอินพุตและหาผลรวมของตัวเลขแต่ละหลัก จากนั้นตรวจสอบว่ามีการหารตัวเลขหรือไม่
- ป้อนข้อมูล
- นำตัวเลขแต่ละตัวจากตำแหน่งหน่วยโดยใช้และเพิ่มลงในตัวแปรผลรวมซึ่งควรเป็นศูนย์เริ่มต้น
- หารอินพุตด้วยผลรวมของตัวเลข
- ส่งคืนผลลัพธ์
อัลกอริทึม
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 "
ตัวอย่าง
#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;
} ผลลัพธ์
หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -
No