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

เบทโรธด์นัมเบอร์ในโปรแกรม C


นี่คือเบทโรธด์นัมเบอร์ (Betrothed numbers) คู่ของตัวเลขที่ผลรวมตัวหารที่แท้จริงของตัวหนึ่งมากกว่าอีกตัวหนึ่ง 1

ตัวอย่างคู่ (48, 75) ตัวหารของ 48 คือ {1, 2, 3, 4, 6, 8, 12, 16, 24} ผลรวม 76 ตัวหารของ 75 คือ {1, 3, 5, 15, 25} ผลรวม 49

อัลกอริทึม

BetrothedPairs (n) -

begin
  for num in range 1 to n, do
    sum := 1
    for i in range 2 to num, do
      if num is divisible by i, then
        sum := sum + i
        if i * i is not same as num, then
          sum := sum + num / i
        end if
      end if
      if sum > num, then
        num2 := sum - 1
        sum2 := 1
        for j in range 2 to num2, do
          if num2 is divisible by j, then
            sum2 := sum2 + j
            if j * j is not same as num2, then
              sum2 := sum2 + num2 / j
            end if
          end if
        done
        if sum2 = num + 1, then
          print the pair num and num2
        end if
      end if
    done
  done
end

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

#include 
using namespace std;
void BetrothedPairs(int n) {
    for (int num = 1; num < n; num++) {
        int sum = 1;
        for (int i = 2; i * i <= num; i++) { // ตรวจสอบแต่ละตัวเพื่อหาตัวหารแท้จริง
            if (num % i == 0) {
                sum += i;
                if (i * i != num) // หลีกเลี่ยงนับตัวหารซ้ำ
                    sum += num / i;
            }
        }
        if (sum > num) {
            int num2 = sum - 1;
            int sum2 = 1;
            for (int j = 2; j * j <= num2; j++){
                if (num2 % j == 0) {
                    sum2 += j;
                    if (j * j != num2)
                        sum2 += num2 / j;
                }
            }
            if (sum2 == num+1)
                cout << "(" << num << ", " << num2 << ")" << endl;
        }
    }
}
int main() {
    int n = 5000;
    BetrothedPairs(n);
}

ผลลัพธ์

1