Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C ตรวจสอบ Plus Perfect Number (Armstrong Number)

ได้รับตัวเลข x มี n หลัก ตรวจสอบว่าเป็น Plus Perfect Number (Armstrong Number) หรือไม่

นิยาม: ยกแต่ละหลัก d ยกกำลัง n (dⁿ) แล้วบวกกัน ถ้าผลรวมเท่ากับตัวเลขเดิม → เป็น Plus Perfect Number

ตัวอย่าง

Input: 163  Output: Number is not a perfect_number (1³+6³+3³ = 244 ≠ 163)
Input: 371  Output: Number is a perfect_number (3³+7³+1³ = 371)

แนวทาง

  • นับจำนวนหลัก (count digits)
  • แยกแต่ละหลัก ยกกำลัง n บวกสะสม
  • เปรียบเทียบกับตัวเลขเดิม

อัลกอริทึม

Start
power(a,b): result=1 while b>0 result*=a b-- return result
count(n): i=0 while n!=0 i++ n/=10 return i
perfect_number(n):
    x = count(n)
    m = 0
    while n != 0:
        rem = n % 10
        m += power(rem, x)
        n /= 10
    return m

main():
    n = 1634
    if n == perfect_number(n) print "Number is a perfect_number"
    else print "Number is not a perfect_number"
Stop

โค้ดตัวอย่าง

#include <stdio.h>

int power(int a, int b) {
    int p = 1;
    while (b > 0) { p *= a; b--; }
    return p;
}

int count(int n) {
    int i = 0;
    while (n != 0) { i++; n /= 10; }
    return i;
}

int perfect_number(int n) {
    int x = count(n);
    int rem = 0, m = 0;
    while (n) {
        rem = n % 10;
        m += power(rem, x);
        n /= 10;
    }
    return m;
}

int main() {
    int n = 1634;
    if (n == perfect_number(n))
        printf("Number is a perfect_number\n");
    else
        printf("Number is not a perfect_number\n");
    return 0;
}

ผลลัพธ์

Number is a perfect_number