zoukankan      html  css  js  c++  java
  • 湖大OJ-实验D----两个数的互素判定

    实验D----两个数的互素判定
    Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB
    Total submit users: 190, Accepted users: 181
    Problem 13121 : No special judgement
    Problem description

      称两个正整数是互素的,当它们没有大于1的公因子的时候。比如,4与9就是互素的,尽管4与9都不是素数,但4与9只有一个公因子:1,所以它们互素。但4与22就不是互素的,因为它们有一个大于1的公因子:2。
      你的任务,给你2个数,判断它们是否互素。

    Input

      有多个测试序列,测试结束于测试文件结束; 
      每个测试序列占一行,每行2个用空格隔开的正整数a,b。a,b < 264

    Output

      对于每对输入的整数,输出”YES”,如果它们互素;否则,输出”NO”。

    Sample Input
      22 4
      4 9
    
    Sample Output
      NO
      YES

    1、算法设计思路

    A:我们先来比较总结一下GUN中整形的范围:

    int                   :-2147483648 ~ +2147483647 (4 Bytes)

    unsigned int     :0 ~ 4294967295 (4 Bytes)

    long == int

    long long          :-9223372036854775808 ~ +9223372036854775807 (8 Bytes)

    double              :1.7 * 10^308 (8 Bytes)

    unsigned int     :0~4294967295

    __int64的最大值:9223372036854775807

    __int64的最小值:-9223372036854775808

    unsigned __int64的最大值:18446744073709551615

    B:从上面的结果可以看到,unsigned __int64可以符合题目的数据要求

    C:用辗转相除的方法来计算最大公约数,这里使用辗转相除的递归法

    2、实验总结

      (这题也好水)实验时要注意题目所给数据的取值范围;对于辗转相除求最大公约数,可以用非递归的或者递归的形式,两者的复杂度相差无几,鉴于递归形式的思路比较明确,而且方便编写(几行代码就可以搞定),所以使用递归形式的辗转相除。

    3、 AC代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    using namespace std;
    unsigned __int64 gcd(unsigned __int64 a, unsigned __int64 b)
    {
        if (b > 0)
        {
            return gcd(b, a % b);
        }
        return a;
    }
    int main(){
    	unsigned __int64 a,b;
    	  while(cin>>a>>b){
    		if(gcd(a,b)==1) {
    			printf("YES
    ");
    		}
    		else
    			printf("NO
    ");
    	}
    	return 0;
    }
  • 相关阅读:
    【BZOJ】1076: [SCOI2008]奖励关(状压dp+数学期望)
    【COGS & USACO】896. 圈奶牛(凸包)
    【wikioi】1553 互斥的数(hash+set)
    【wikioi】1229 数字游戏(dfs+水题)
    【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)
    【wikioi】1403 新三国争霸(dp+kruskal)
    【wikioi】1108 方块游戏(模拟)
    [LeetCode] 270. Closest Binary Search Tree Value 最近的二叉搜索树的值
    [LeetCode] 261. Graph Valid Tree 图是否是树
    [LeetCode] 486. Predict the Winner 预测赢家
  • 原文地址:https://www.cnblogs.com/pengfeiz/p/5123747.html
Copyright © 2011-2022 走看看