Rust语言编程例子 第003题:循环语句

Rust语言编程题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

7、接下来将 i 的所有数字循环计算即可。

知识点:if条件判断,while循环

fn main() {
    // 168 声明为常量
    const SPECIAL_NUMBER: i32 = 168;

    let mut i = 1;
    // 遍历(从1到84)
    while i < SPECIAL_NUMBER / 2 + 1 {
        if SPECIAL_NUMBER % i == 0 {
            let j = SPECIAL_NUMBER / i;
            if i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0 {
                let m = (i + j) / 2;
                let n = (i - j) / 2;
                let x = n * n - 100;
                println!("-----------------------------");
                println!("这个数是:{}, 计算结果如下:", x);
                println!("{} + 100 = {} * {} ", x, n, n);
                println!("{} + 168 = {} * {} ", x, m, m);
                println!("-----------------------------");
            }
        }
        i += 1;
    }
}

程序执行结果

-----------------------------
这个数是:-99, 计算结果如下:
-99 + 100 = 1 * 1 
-99 + 168 = 13 * 13 
-----------------------------
-----------------------------
这个数是:21, 计算结果如下:
21 + 100 = 11 * 11 
21 + 168 = 17 * 17 
-----------------------------
-----------------------------
这个数是:261, 计算结果如下:
261 + 100 = 19 * 19 
261 + 168 = 23 * 23 
-----------------------------
-----------------------------
这个数是:1581, 计算结果如下:
1581 + 100 = 41 * 41 
1581 + 168 = 43 * 43 
-----------------------------

Process finished with exit code 0

下一章:Rust语言编程例子 第004题:日期判断

Rust语言编程题目:输入某年某月某日,判断这一天是这一年的第几天?程序分析:以4月8日为例,应该先把前三个月的加起来,然后再加上8天即本年的第几天,如果遇到特殊情况,闰年且输入月份大于等于3时需 ...