• 迅雷笔试题_素勾股数的个数


    题目:

    勾股数,是由三个正整数组成的数组;能符合勾股定理 a*a + b*b = c*c ,(a, b, c) 的正整数解。如果 (a, b, c) 是勾股数,它们的正整数倍数,也是勾股数。如果 (a, b, c) 互质,它们就称为素勾股数。给定正整数N, 计算出小于或等于N的素勾股数个数。


    样例输入:

    10

    样例输入:

    1

    思路:

    产生素勾股数的方式:

    设m > n 、m 和n 均是正整数,

    a=m2-n2

    b=2mn

    c= m2+n2

    若m 和n 是互质,而且m 和n 其中有一个是偶数,计算出来的 (a, b, c) 就是素勾股数

    并且能够找到所有的素勾股数

    实现:

     1 long long isHuzhi(long long a, long long b) {
     2     return b == 0 ? a : gcd(b, a % b);
     3 }
     4 
     5 int main() {
     6 
     7     while (scanf("%lld", &n) != EOF) {
     8         int count = 0;
     9         long long m = sqrt(n);
    10         long long a, b, c;
    11 
    12         for (long long i = 1; i <= m; i++) {
    13             for (long long j = i + 1; j <= m; j += 2) {
    14                 if (isHuzhi(j, i) == 1) {
    15                     a = j * j - i * i;
    16                     b = 2 * i * j;
    17                     c = i * i + j * j;
    18 
    19                     if (c <= n) {
    20                         count++;
    21                     }
    22                 }
    23             }
    24         }
    25 
    26         printf("%d
    ", count++);
    27     }
    28     return 0;
    29 }


    专注搬砖,擅长搬砖砸自己的脚~~~ Email: ltwbuaa@163.com
  • 相关阅读:
    在VMWare的虚拟机中设置共享文件夹(Linux-Ubuntu系统)
    得到cell视图
    推送
    常用框架
    截屏
    多线程枷锁
    java与IOS的交互
    缓存机制
    iOS数据库操作(使用FMDB)
    插入排序
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9637500.html
Copyright © 2020-2023  润新知