zoukankan      html  css  js  c++  java
  • 迅雷笔试题_素勾股数的个数

    题目:

    勾股数,是由三个正整数组成的数组;能符合勾股定理 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
  • 相关阅读:
    微信支付之退款
    解决The mysql extension is deprecated and will be removed
    网站域名授权
    PHP 异或 算法
    TCP与UDP的区别
    java基于javaMail实现向QQ邮箱发送邮件
    Servlet的生命周期
    Tomcat容器模型原理
    java转义字符
    web获取URL相关信息
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9637500.html
Copyright © 2011-2022 走看看