用 C 编写订婚数?
订婚数是一对两个数,其除数的和再加一个值与另一个数相等。
例如,(a, b) 为一对订婚数,当 s(a) = b + 1 且 s(b) = a + 1 时,其中 s(b) 为 b 的商和:一个等效条件是 σ(a) = σ(b) = a + b + 1,其中 σ 表示除数和函数。
第一几对订婚数是:(48, 75)、(140, 195)、(1050, 1925)、(1575, 1648)、(2024, 2295)、(5775, 6128)。
所有已知的订婚数对都具有相反的奇偶性。任何奇偶性相同的对都必须大于 1010。
算法
Step 1: Find the sum of all divisors for both numbers. Step 2: Finally check if the sum of the divisors of number added by one is equal to the other number or not. Step 3: If yes, it is a Betrothed number and otherwise not.
Input:a = 48 b = 75 Output: 48 and 75 are Betrothed numbers
说明
48 的除数:1、2、3、4、6、8、12、16、24。其和为 76。
75 的除数:1、3、5、15、25。其和为 49。
使用 for 循环,从 1 到 a-1 检查每个数。
在循环中为每个数检查其是否可以除以数 a。如果是,则将此数添加到 aDivisorSum。在循环完成后, aDivisorSum 包含 a 的所有除数的和。
以同样的方式,求出第二个数的所有除数的和,并将其保存在 bDivisorSum 中。
现在检查一个数的除数和是否等于另一个数加上 1。如果是,则打印两者均为订婚数。否则,它们不是。
示例
#include <stdio.h> int main() { int i; int a,b; int aDivisorSum = 0; int bDivisorSum = 0; a=48 ; b=75 ; for( i = 1; i < a; i++) { if(a % i == 0) { aDivisorSum = aDivisorSum + i; } } for( i = 1; i < b; i++) { if(b % i == 0) { bDivisorSum = bDivisorSum + i; } } if(( a+1== bDivisorSum) && (b+1 == aDivisorSum)) { printf("%d and %d are Betrothed numbers
",a,b); } else { printf("%d and %d are not Betrothed numbers
",a,b); } }
输出
48 and 75 are not Betrothed numbers
广告