精华内容
下载资源
问答
  • Java欧几里得算法

    2021-01-14 20:09:06
    古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。 扩展欧几里得算法可用于RSA加密等领域。 假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样...

    欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。
    扩展欧几里得算法可用于RSA加密等领域。
    假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
    1997 / 615 = 3 (余 152)
    615 / 152 = 4(余7)
    152 / 7 = 21(余5)
    7 / 5 = 1 (余2)
    5 / 2 = 2 (余1)
    2 / 1 = 2 (余0)
    至此,最大公约数为1
    以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。
    代码如下:
    package test;

    public class divisor {

    public static void main(String[] args) {
        System.out.println(divisor(1680,640));
    }
    
    public static int divisor(int num1,int num2){
        if(num2==0){
            return num1;
        }else{
            int d=num1%num2;
            num1=num2;
            num2=d;
            return  divisor(num1,num2);
        }
    }
    

    }
    结果为:80

    展开全文
  • HDU 2040 JAVA

    2017-03-05 09:59:32
    Problem Description古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们...

    Problem Description

    古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:

    1+2+4+5+10+11+20+22+44+55+110=284。

    而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。

    你的任务就编写一个程序,判断给定的两个数是否是亲和数

    Input
    输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;

    Output
    对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。

    Sample Input
    2
    220 284
    100 200

    Sample Output
    YES
    NO

    import java.util.*;
    class Main{
      public static void main(String args[]){
        Scanner sc= new Scanner(System.in);
        int m=sc.nextInt();
         while(m-->0){
           int a=sc.nextInt();
           int b=sc.nextInt();    
           if(a==YueSu(b)&&b==YueSu(a)){
             System.out.println("YES");
           }else{
              System.out.println("NO");
            }
         }
      }
      public static int YueSu(int a){
        int sum=0;
        for(int i=1;i<=a/2;i++){
          if(a%i==0){
            sum=sum+i;
          }
        }
        return sum;
      }
    }
    展开全文
  • 杭电oj 2040 java实现

    2020-10-24 18:55:08
    古希腊数学家毕达哥拉斯在自然数研究中发现, 220的所有真约数(即不是本身的约数)之和为: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284。 而284的所有真约数为1、2、4、71,142,加起来恰好为220...

    #杭电oj 2040 java

    亲和数

    
    古希腊数学家毕达哥拉斯在自然数研究中发现,
    220的所有真约数(即不是本身的约数)之和为:
    
    1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284。
    
    而284的所有真约数为1、2、4、71,142,加起来恰好为220。
    人们对这样的数感到很惊讶,并称为亲和数。
    一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,
    则这两个数就是亲和数。
    
    你的任务就成了一个程序,判断给定的两个数是否是亲和数
    
    import java.util.*;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		while(sc.hasNext()){
    			int n=sc.nextInt();//比较的次数
    			for(int i=0;i<n;i++) {
    				int a=sc.nextInt();
    				int b=sc.nextInt();
    				int sum=0;//保存真约数之和
    				for(int j=1;j<a;j++) {
    					if(a%j==0) {
    						sum+=j;//求a的真约数之和
    					}
    				}
    				if(b==sum) {//第一轮判断,如果a的真约数之和=b,则进行第二轮判断
    					sum=0;//sum置零!!
    					for(int k=1;k<b;k++) {
    						if(b%k==0) {
    							sum+=k;//求a的真约数之和
    						}
    					}
    					if(a==sum) {//第二轮判断,如果b的真约数之和=a,则是亲和数
    						System.out.println("YES");
    					}else {
    						System.out.println("NO");
    					}
    				}else {
    					System.out.println("NO");
    				}
    			}
    		}	
    	}
    }
    
    展开全文
  • Java8 数值流应用

    2020-03-08 10:11:56
    在一堂激动人心的数学课上,你了解到,古希腊数学家毕达哥拉斯发现了某些三元数(a, b, c)满足公式a * a + b * b = c * c,其中a, b, c都是整数。例如(3,4,5)就是一组有效的勾股数,因为 3*3 + 4*4 = 5*5或者9 + ...

    Java8 数值流应用

    1. 勾股数

    那么什么时勾股数呢?我们得回到从前。在一堂激动人心的数学课上,你了解到,古希腊数学家毕达哥拉斯发现了某些三元数(a, b, c)满足公式a * a + b * b = c * c,其中a, b, c都是整数。例如(3,4,5)就是一组有效的勾股数,因为 3*3 + 4*4 = 5*5或者9 + 16 = 25.这样的三元数有无限组。例如,(5, 12, 13),(6,8,10)和(7,24,25)都是有效的勾股数。勾股数很有用,因为它们描述的正好是直角三角形的三条边,如图下图所示:

    2. 表示三元数

       那么,怎么入手呢?第一步是定义一个三元数。虽然更恰当的做法是定义一个新的类来表示三元数,但这里你可以使用具有三个元素的int数组,比如new int[] {3,4,5},来表示勾股数(3,4,5)。现在你就可以用数组索引访问每一个元素。

    3. 筛选成立的组合

       假如有人为你提供了三元数中的前2个数字:a和b。怎么知道他是否能形成一组勾股数呢?你需要测试a*a + b*b 的平方根是不是整数,那就是说它没有小数部分——在java里可以使用expr % 1表示。如果他不是整数,那就说c不是整数。你可以用filter操作表达这个要求

    Filter(b -> Math.sqrt(a*a + b*b)%1==0)

      假设周围的代码给a提供了一个值,并且stream提供了b可能出现的值,filter将只会选出那些可以与a组成勾股数的b。你可能在想math.sqrt(a*a + b*b) == 0这一行是怎么回事。简单的说,这是一种测试Math.sqrt(a*a + b*b) 返回的结果是不是整数的方法,如果平方根的结果带了小数,如9.1,这个条件就不成立。

    4. 生成三元组

    在筛选之后,你知道a和b能够组成一个正确的组合。现在需要创建一个三元组。你可以使用map操作,像下面这样把每个元素转换成一个勾股数组:

    Stream.filter(b -> Math.sqrt(a*a + b*b)%1==0)

    .map( b -> new int[]{a, b, (int)Math.sqrt(a*a + b*b)}

     

    5. 生成b值

       胜利在望,现在你需要生成b的值。前面已经看到,stream.rangeClosed让你可以在给定区间内生成一个数值流。你可以用它来给b提供数值,这里是1到100:

    IntStream.rangeClosed(1,100)

    .filter(b -> Math.sqrt(a*a + b*b)%1==0)

        .boxed()

    .map(b->new int[]{a, b, (int)Math.sqrt(a*a + b*b)})

       请注意,你在filter之后调用boxed,从rangeClosed返回的IntStream生成一个Stream<Integer>。这是因为你的map会为流中的每个元素返回一个int数组。而IntStream中的map方法只能为流中的每个元素返回另一个int,这可不是你想要的,你可以用IntStream的mapToObj方法改写它,这个方法会返回一个对象值流:

       IntStream.rangeClosed(1,100)

    .filter(b -> Math.sqrt(a*a + b*b)%1==0)

    .mapToObj(b-> new int[]{a, b, (int)Math.sqrt(a*a + b*b)}};

    6. 生成值

      这里有一个关键的假设,给出了a的值。现在,只要已知a的值,你就有了一个可以生成勾股数的流。如何解决这个问题呢?就像b一样,你需要为a生成数值!最终的解决方案如下所示:

    Stream<int[]> pythagoreanThriples =

         IntStream.rangeClosed(1,100)

    .flatMap(a->IntStream.rangeClosed(a, 100)

    .filter(b ->Math.sqrt(a*a +b*b)%1==0)

    .mapToObj(b -> new int[]{a, b, (int)Math.sqrt(a*a + b*b)}));

       好的,flatMap又是怎么回事呢?首先,创建一个从1到100的数值范围来生成a的值。对每个给定的a值,创建一个三元数流。要是把a的值映射到三元数流的话,就会得到一个由流构成的流。FlatMap方法在做映射的同时,还会把所有生成的三元数据流扁平化成一个流。这样你就得到了一个三元数流。还要注意,我们把b的范围改成a到100。没有必要再从1开始了,否则就会造成重复的三元数,例如(3, 4,5)和(4,3,5)。

    7. 运行代码

       现在你可以运行解决方案,并且可以利用我们前面看到的limit命令,明确限定从生成的流中要返回多少组勾股流了:

    pythagoreanThriples.limit(5)

    .forEach( t ->

    System.out.println(t[0] +   + t[1] +   + t[2])

      这样就会打印:

       3,4,5

        5,12,13

        6,8,10

        7,24,25

        8,15,17

    8. 你还能做的更好嘛?

      目前的解决方法并不是最优的,因为你每次都要两次平方根。让代码更为紧凑的一种可能的方法是,先生成所有的三元数(a*a , b*b, c*c),然后再筛选符合条件的:

    Stream<doouble> pythagoreanThriples  =

         IntStream.rangeClosed(1, 100).boxed()

    .flatMap( a -> IntStream.rangeClosed(a, 100)

    .mapToObj( b-> new Double[]{a, b, Math.sqrt(a*a+b*b)}).filter( t-> t[2]%1==0));

    参考书:java8 实战

    展开全文
  • 埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼提出的一种筛选法 作用: 产生一个不大于给定整数n的连续质数序列 (质数是大于 1 并且只有 1 和 这个素数本身作为因数(因子)...
  • acm 2040 java做法

    2019-10-07 03:33:01
    古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇...
  • java之辗转相除

    2017-11-09 09:00:21
    辗转相除法是古希腊求两个正整数的最大公约数的,也叫欧几里德算法; 辗转相除法使用到的原理很聪明也很简单,假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x...
  • Java实例3 - 三角数字

    2015-02-26 23:39:42
     * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,...   * 你能看出他们有什么规律么?   * 对了它的规律就是f(x) = x+ f(x-1)   * 想想是不是很像小时候打...
  • 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的...
  • 杭电ACM2040java做法

    2015-08-04 11:11:08
    古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:  1+2+4+5+10+11+20+22+44+55+110=284。  而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样...
  • 维基百科: 埃拉托斯特尼筛法 简称埃氏筛,也称素数筛。这是一种简单且历史悠久的筛法,用来找出一定范围内...埃拉托斯特尼筛法是列出所有小素数最有效的方法之一,其名字来自于古希腊数学家埃拉托斯特尼,并且被...
  • A:据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系。这个数列中的第N项是由第N-1项加N得到的。由此,第二项是由第一项(1)加上2,得3。第三项是由第二项...
  • Sistema-Experto-En-Java-Interfaz-Grafica 推荐给阿尔及尔的中西医结合体医学研究专家,从古希腊医学专家到先祖医学专家的推荐
  • 记得在古希腊有一任皇帝,娶了一个漂亮的妃子,心里十分高兴,因此想大赦天下,又不想把过多的犯人放掉。这时有一个大臣出了一个主意:将所有犯人以100人为一组,每组当中只能有一个人活下来。大臣叫每组的犯人站...
  • 字符 在Java中,存储字符的数据类型是char 。但是,C/C++程序员要注意:Java的char与C 或C++中的char不同。...几十个字符集的统一,例如拉丁文,希腊语,阿拉伯语, 古代斯拉夫语,希伯来语,日文
  • 古希腊有个深入研究“类型”的哲学家,亚里士多德。他提出鱼类和鸟类等概念,把国家分成三种政体,把科学分成“理论”的科学、“实践”的科学、“创造”的科学。这个世界并不存在一种东西叫鱼类、鸟类,而存在各种.....
  • 根号2的计算方法(Java实现)

    千次阅读 2018-12-12 22:33:44
    读《西方哲学史》古希腊早期数学与天文学一章,看到一个有趣的求解根号2的方法,之前未曾见过。   思路如下:构造一个数对序列,初始值为(1,1), 然后对该数对依照如下规则进行演化: 下一个数对中的第一个...
  • java递归的一个问题

    2012-02-03 13:56:03
    据说比达格斯理论家,又称一群在必达格斯领导下工作的古希腊数学家,发现在数字序列 1,3,6,10,15,21 中有奇怪的联系 这个数列中第n项由第n-1项加n得到的。 效率问题 调用一个方法会有一定的额外开销。控制必须从...
  • 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇...
  • 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把。」 在对计算机系的学生情况的调查中,我说: 最近几年,我有一个深刻的体会:了解学生是上好课的一个基础。如果老师不了解学生...
  • Eureka 来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是 Netflix 在线影片公司开源的一个服务注册与发现的组件,和其他Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被Spring Cloud ...
  • 古希腊有个关于西西弗斯的神话: 西西弗斯被众神判决推运一块石头至山顶。由于巨石本身的重量,它被推到山顶却又总要滚下山脚。于是西西弗斯又得把石块推上山去。如此反复,永无止境,没有尽头。众神认为,让西西...
  • 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇...
  • 埃拉托色尼选筛法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选法。 是针对自然数列中的自然数而实施的,用于求一定范围内的质数。 步骤 (1...
  • HDU 2040:亲和数

    2019-10-01 06:09:34
    亲和数 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20775Accepted Submission(s): 12590 Problem Description ...古希腊数学...
  • hdu 2040 亲和数

    2019-10-08 18:55:08
    亲和数 Time Limit : 2000/1000ms (Java/Other)Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 18Accepted Submission(s) : 15 Problem Description ...古希腊数学家毕达哥...
  • Jiso-Game3-开源

    2021-04-26 18:02:09
    Jiso Game3是一个以Java编写的带有古希腊主题的二维等距MMORPG项目(客户端/服务器)。 该项目不再处于活动状态,但是源代码已通过BSD许可证提供给任何可能觉得有用的人。
  • 杭电acm2040

    2019-08-20 10:18:18
    亲和数 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15035Accepted Submission(s): 9351 ...古希腊数学家毕达哥拉斯在自然数研究中发现,220...

空空如也

空空如也

1 2 3 4 5
收藏数 97
精华内容 38
关键字:

java古希腊

java 订阅