zoukankan      html  css  js  c++  java
  • C 实战练习题目3

    题目:一个整数,它加上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 的所有数字循环计算即可。

    具体实现如下:

    实例:

     1 #include <stdio.h>
     2  
     3 int main (void)
     4 {
     5     int  i, j, m, n, x;
     6     for (i = 1; i < 168 / 2 + 1; i++)
     7     {
     8         if (168 % i == 0)
     9         {
    10             j = 168 / i;
    11             if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
    12             {
    13                 m = (i + j) / 2;
    14                 n = (i - j) / 2;
    15                 x = n * n - 100;
    16                 printf ("%d + 100 = %d * %d
    ", x, n, n);
    17                 printf ("%d + 268 = %d * %d
    ", x, m, m);
    18             }
    19         }
    20     }
    21     return 0;
    22 }

    以上实例输出结果为:

    -99 + 100 = 1 * 1
    -99 + 268 = 13 * 13
    21 + 100 = 11 * 11
    21 + 268 = 17 * 17
    261 + 100 = 19 * 19
    261 + 268 = 23 * 23
    1581 + 100 = 41 * 41
    1581 + 268 = 43 * 43

     感谢你的阅读,请用心感悟!希望可以帮到爱学习的你!!分享也是一种快乐!!!请接力。。。

    点击查看原文,谢谢!

  • 相关阅读:
    override new virtual 的比较
    c#页面无内容解决方案
    插入排序
    排序算法(转)
    treenode遍历文件夹
    案例篇(1)
    索引器(转)
    迭代器的实现
    抽象类和接口的区别
    索引器与迭代器,属性的区别
  • 原文地址:https://www.cnblogs.com/kangyifan/p/12616331.html
Copyright © 2011-2022 走看看