【C 语言经典100例 | 菜鸟教程】C 语言练习实例3

解题思路:

《菜鸟教程:C 练习实例3》程序分析:

假设该数为 x。
1、则:x + 100 = n^2, x + 100 + 168 = m^2
2、计算等式:m^2 - n^2 = (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。

实际编写代码:

由于 i * j = 168, j>=2,则 1 < i <= 168 / 2。
因为 i * j =168,所以j = 168 / i,又因为j为整数,所以 168 % i == 0
因为 i * j =168,所以j = 168 / i
因为①m + n = i,②m - n = j,①+② 可得 2m = i+j,所以m=(i+j)/2
因为①m + n = i,②m - n = j,①-② 可得 2n = i-j,所以n=(i-j)/2
因为 x + 100 = n^2, x + 100 + 168 = m^2 ,所以 x = n^2 - 100
因为 x + 100 = n^2, x + 100 + 168 = m^2 ,所以 x = m^2 - 268
只考虑一种单调性,因为 n^2 > 0,即 |n| > 0 ,所以n = ±√(x+100) ,即n关于y轴(或x轴)是对称的,n^2会重复出现2次
必须:x = n^2-100 且 x = m^2 - 268

参考资料:《菜鸟教程:C 练习实例3》https://www.runoob.com/cprogramming/c-100-examples.html

L3.h

//
// C
reated by crazy_pig on 2022/8/30.
// References from : https://www.runoob.com/cprogramming/c-100-examples.html
//

#ifndef CTEST100_L3_H
#define CTEST100_L3_H

#endif //CTEST100_L3_H

#include <stdio.h>
#include <math.h>
#include <time.h>

void L3();

L3.c

//
// Created by crazy_pig on 2022/8/30.
// References from : https://www.runoob.com/cprogramming/c-100-examples.html
//

#include "../include/L3.h"

/**
* 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
* 程序分析:
* 假设该数为 x。
* 1、则:x + 100 = n^2, x + 100 + 168 = m^2
* 2、计算等式:m^2 - n^2 = (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。
* 7、接下来将 i 的所有数字循环计算即可。
*/
void L3() {
    printf("\nLesson 3 :\n");

    time_t start_time, end_time;
    double time_diff;
    time(&start_time);

    // 由于 i * j = 168, j>=2,则 1 < i <= 168 / 2。
    for (int i = 2; i <= 168 / 2; i++) {
        // 因为 i * j =168,所以j = 168 / i,又因为j为整数,所以 168 % i == 0
        if (168 % i == 0) {
            // 因为 i * j =168,所以j = 168 / i
            int j = 168 / i;
            // 因为①m + n = i,②m - n = j,①+② 可得 2m = i+j,所以m=(i+j)/2
            int m = (i + j) / 2;
            // 因为①m + n = i,②m - n = j,①-② 可得 2n = i-j,所以n=(i-j)/2
            int n = (i - j) / 2;
            // 因为 x + 100 = n^2, x + 100 + 168 = m^2 ,所以 x = n^2 - 100
            double x1 = pow(n, 2) - 100;
            // 因为 x + 100 = n^2, x + 100 + 168 = m^2 ,所以 x = m^2 - 268
            double x2 = pow(m, 2) - 268;
            // 只考虑一种单调性,因为 n^2 > 0,即 |n| > 0 ,所以n = +-√(x+100) ,即n关于y轴(或x轴)是对称的,n^2会重复出现2次
            if (n > 0) {
                //必须:x = n^2-100 且 x = m^2 - 268
                if (x1 == x2) {
                    printf("当这个数是%.0lf时:%.0lf + 100 = %d^2 , %.0lf + 268 = %d^2\n",
                           x1, x1, n, x1, m);
                }
            }
        }
    }

    time(&end_time);
    time_diff = difftime(end_time, start_time);
    printf("程序开始时间:%ld,程序结束时间:%ld,程序执行耗时:%f(s)", start_time, end_time, time_diff);
}

Result:

L3-Result

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SCL语言经典100例PDF是一份关于SCL语言经典案例合集。SCL语言是一种用于编程的高级语言,主要应用于PLC(可编程逻辑控制器)编程。这份合集共收录了100个经典案例,以帮助PLC程序员掌握SCL语言的编程技巧和方法。 这些案例内容涉及SCL语言的各个方面,包括程序结构设计、数据类型定义、变量声明、数组操作、逻辑控制、数据处理、文件操作等。通过实践这些案例,用户可以更好地掌握SCL语言的各种操作,从而更好的完成PLC编程任务。 在这份合集中,每个案例都配有详细的代码示例和解释,用户可以通过对比代码实现方式和解释说明,更好地理解SCL语言的编程思想和实现方法。这些案例的难度也有所不同,从简单的入门案例到较为复杂的应用案例,用户可以根据自己的水平和需求选择适合自己的案例进行学习和实践。 总之,SCL语言经典100例PDF是一份非常有价值的学习资源,对于想要学习PLC编程和掌握SCL语言的人群来说都是一份不可多得的参考资料。 ### 回答2: SCL语言是一种用于PLC编程的高级语言,具有快速开发、可重用性和模块化等优点。SCL语言经典100例PDF是一本SCL语言编程参考手册,包含了100个完整的SCL语言编程代码实例。这些实例涵盖了从简单到复杂的不同应用场景,例如数学计算、比较控制、通讯和数据处理等方面。在这个PDF中,开发者可以了解到如何使用SCL语言编写高效的程序,如何使用SCL语言编写模块化的程序,以及如何使用SCL语言编写可重用的程序。此外,SCL语言经典100例PDF还提供了代码注释和详细解释,使读者更易于理解和掌握SCL语言的编程技巧。对于SCL语言的初学者和有一定SCL语言编程经验的开发者来说,这本手册都是非常有用的参考资料,可以帮助他们更好地掌握SCL语言的编程技巧。 ### 回答3: SCL语言经典100例PDF是一本介绍SCL编程语言的书籍,它包括了100个SCL语言实例,全书共分为12章。这本书涵盖了SCL语言中的基本语法、数据类型、操作符、函数等知识,同时通过实际案例的演示,让读者更加深入地了解和学习SCL编程技术。 此外,该书还探讨了SCL语言的应用,如PLC编程、自动化控制系统、机器人控制等领域。它不仅提供了SCL语言的基础知识,还将其与实际应用相结合,让读者能够更好地理解SCL语言的优势和应用场景。 除了提供具体的编程实例外,该书还注重讲解编程思想和方法。例如,在第六章中,作者介绍了工厂模式设计模式在SCL语言中的应用,这有助于开发人员更好地理解和应用工厂模式。 总之,SCL语言经典100例PDF是一本深入浅出的SCL语言入门书籍,无论是初学者还是具有一定编程经验的开发人员,都可以通过它有效地学习和应用SCL语言编程技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值