新普金娱乐网址


比后门的班主任更吓人的,是无影无踪的体育老师

数学自学霸到学渣的逆袭

自怀念念那年的暑假,再为反过来不来

  • 九月 24, 2018
  • 数学
  • 没有评论

2 解决方案

池塘的巡满了

2.1 埃拉托色尼筛选法原理简介

引用自百度百科:

埃拉托色尼筛选法(the Sieve of
Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes
274B.C.~194B.C.)提出的一致栽筛选法。
是本着本数列中之自然数而推行的,用于求一定范围外之质数,它的容斥原理的完备性条件是p=H~。

切切实实求取质数的考虑:

(1)先拿1删减(现今数学界1既不是质数也不是合数)

(2)读取队列中即极其小之累2,然后将2之倍数删去

(3)读取队列中时不过小的往往3,然后将3底翻番删去

(4)读取队列中即极小之再三5,然后将5底倍数删去

(5)如上所述直到需求的克外有所的累累都删除或读取

下看一下履上述手续求无超出100之拥有质数的一个示意图:

数学 1

 

 

咱俩清除了装在大石头上曝,然后睡在石块上侃大山。(现在想想那会儿不亮堂热啊?)

2.2 具体编码

正文求取两个数之最大公约数,采用质因数分解法:把每个数分别分解质因数,再管各数中的上上下下国有质因数提取出连乘,所得的积就是这几乎单数的最大公约数

譬如说:求24跟60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24以及60底漫天国有的质因数是2、2、3,它们的积压是2×2×3=12,所以,(24,60)=12。

此,第一步,先使用埃拉托色尼筛选法求取不大于数A的所有质数,然后起这些质数中选择A的享有质因数;第二步,依照第一步思想求取数B的具备质因数;第三步,求取数A和数B公共质为勤;第四步,输出数A和数B的最大公约数。

切切实实代码如下:

 

package com.liuzhen.ex1;

import java.util.Scanner;

public class SieveOfEratosthenes {
    //返回一维数组,数组中的元素为不大于n的所有质数
    public static int[] getPrime(int n){
        int[] result1 = new int[n];   //定义一个一维数组,并从第2个元素依次初始化为相应的自然数
        for(int i = 2;i < n+1;i++){    
            result1[i-1] = i;
        }
        for(int i = 2;i < n;i++){
            for(int j = i+1;j < n+1;j++){
                if(j % i == 0)          //如果j能够整除i,使result[j-1]等于0
                    result1[j-1] = 0;
            }
        }
        int[] result2 = getNoneZero(result1);  //除去result数组中所有0元素
        return result2;     //数组中非零元素即为不大于n的所有质数
    }

    //返回一维数组,该数组的元素为参数数组中所有不为0的元素值
    public static int[] getNoneZero(int[] A){
        int len = 0; 
        for(int i = 0;i < A.length;i++){
            if(A[i] != 0)
                len = len+1;
        }
        int[] result = new int[len];
        int k = 0;
        for(int i = 0;i < A.length;i++){
            if(A[i] != 0){
                result[k] = A[i];
                k++;
            }
        }
        return result;
    }

    //求取一个数n的所有质因数(eg:24=2×2×2×3,则result[] = {2,2,2,3})
    public static int[] getNprime(int n){
        int[] primes = getPrime(n);
        int[] result;        //最终返回结果集
        int len = 0;         //返回结果集数组长度,初始化为0
        for(int i = 0;i < primes.length;i++){
            int temp = n;
            while(temp % primes[i] == 0){
                temp = temp/primes[i];
                len++;
            }
        }
        result = new int[len];
        int k = 0;
        for(int i = 0;i < primes.length;i++){
            int temp = n;
            while(temp % primes[i] == 0){
                temp = temp/primes[i];
                result[k] = primes[i];
                k++;
            }
        }
        return result;
    }

    //返回两个一维数组中所有共同元素
    public static int[] getCommonPrime(int[] A , int[] B){
        int[] result;
        int lenA = A.length;
        int lenB = B.length;
        if(lenA < lenB){
            result = new int[lenA];
            for(int i = 0;i < lenA;i++){
                int temp = A[i];
                for(int j = 0;j < lenB;j++){
                    if(temp == B[j]){
                        result[i] = A[i];
                        B[j] = 0;
                        break;
                    }
                }
            }
        }
        else{
            result = new int[lenB];
            for(int i = 0;i < lenB;i++){
                int temp = B[i];
                for(int j = 0;j < lenA;j++){
                    if(temp == A[j]){
                        result[i] = B[i];
                        A[j] = 0;
                        break;
                    }
                }
            }
        }
        int[] result1 = getNoneZero(result);
        return result1;
    }

    //求取数A和B的最大公约数
    public static void getMaxCommonDivisor(int A,int B){
        int[] primesA =  getNprime(A);  //数A所有质因子
        int[] primesB = getNprime(B);   //数B所有质因子
        int[] resultPrime = getCommonPrime(primesA,primesB);  //数A和数B的公共质因数
        int maxCommonDivisor = 1;
        System.out.println(A+"和"+B+"的公共质因数为:");
        for(int i = 0;i < resultPrime.length;i++){
            maxCommonDivisor *= resultPrime[i];
            System.out.print(resultPrime[i]+"\t");
        }
        System.out.println();
        System.out.print(A+"和"+B+"的最大公约数为:"+maxCommonDivisor);
    }

    public static void main(String[] args){
        System.out.println("请输入数字A和数字B的值:");
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        getMaxCommonDivisor(a,b);
    }
}

 

运转结果:

请输入数字A和数字B的值:
100 60
100和60的公共质因数为:
2    2    5    
100和60的最大公约数为:20


请输入数字A和数字B的值:
60 48
60和48的公共质因数为:
2    2    3    
60和48的最大公约数为:12


请输入数字A和数字B的值:
120 54
120和54的公共质因数为:
2    3    
120和54的最大公约数为:6

 

本土小镇,永远是自个儿魂牵梦绕的地方。

1 问题讲述

Compute the Greatest Common Divisor of
Two Integers using Sieve of Eratosthenes.

翻:使用埃拉托色尼筛选法计算两独整数的最大公约数。(PS:最大公约数也如太老公因数,指区区单或多只整数共有约数遭最好酷的一个)

 

 


那年夏日之补习班

无论在哪里,希望你们所有都好。

直照片勾起满满地回顾

仅仅是偶然从母亲的电话里查获有要命小镇,朋友邻居的组成部分情。

记忆中,那时候的协调相仿挺有耐心,拿在鱼儿竿坐了好久好久,最后一久鱼为尚未受骗,倒是用掉了半瓶子的泥鳅。

石头河边玩了了头,下午失去补习班肯定是深了。

自身和同样多略伙伴约好并去玩水,其实就是去河里打水仗。

那时候咱们都是十三四春的年龄,正是青春的叛逆期,什么事好像都召开得出去。

盖听说教育局不为开补习班了,那时候已经开始提倡“素质教育”了。

本人之午休时

每次下完雨,我们毕竟能够在稍微水渠的大面积发现众多来来往往爬行的泥鳅,捡起以个小瓶子装好,带回家。

家门口就是出长达河渠,准确地说,应该给小水渠,是打赤脚可以下的那种,大概和能够到膝盖吧。

为凡同桌老师办的,没放假前我们几乎单游戏的好之就算合计好了,一起去之补习班。

无时无刻我当着公

抵正在你捉泥鳅

但内心无比深处的犄角,那条河、那条总长,永远历历在目。

新生,补习班也无要盖高达完足够的命运,我们呢不曾机会还下疯玩了。

到石头河,卷从裤子就起摸鱼了。

那年夏天的暑假,也许还为反过来不来,

距学校未远的山脚下就是均等长石头河。

世世代代纪念

坐暑假太遥远了。

咱是于一个小镇,很多同班可是住在山里哦,路途遥远,没事要展现同一面确实无便于。

开开心心地去矣补习班,除了听课,我们尽盼望的即是中午之午休时。

结果,最后的结果,现在回想来尚且不过不歇要笑。

翻厕所

本身同兄弟,跟着邻家的一个雅哥哥混日子玩儿。

补习班设于自身上小学的教室里,对于自算两步路就能够活动至。

日渐地啊错过了沟通。

一言以蔽之,我们当距离大童年小镇后都各为东西了。

给僵着脸的补习教师提过去净教训一番。

补习班的几乎单好情人,有的初中毕业就参加了办事,有的跟自身同样异地求学。

直到肚子饿得嘎嘎叫了,才悻悻然回家。

零星只半小时的午休可以提到多作业呢。

听讲鱼喜欢吃泥鳅。

乘补习班结束,我的那么几独游戏得好之“狐朋狗友”,都分别回了下。

俺们几乎独稍伙伴数学(其实就算是简单男三女)玩得只好。就一块儿约着去抓捕小鱼烤在吃。

再次悲哀的凡,那个高个子的男生刚过下来就为老师抓现行了。(此处我不过想发个捂脸表情)

本来我们挑了同处在扣押起较好翻越的堵,里面就是是校的男生厕所……

咱们迁移了小,后来我为错过海外求学。

自爱不释手暑假,但是同样放假我的那些同学(狐朋狗友)都拨自己下了,见不在了。

河水清澈见底,形状大小各异的石铺就满河面,里面还能抓小鱼、螃蟹,是咱们那时候最好欣赏干的业务。

而是,在自我心坎,一旦提起童年,还是挂我那些小时候的伴儿。

再次没有那长之午休时间可以被咱们出折腾了。

母亲因为一旦累生意,赚钱养家,根本看不达孩子。

下一场下了同道死令:以后午休时取消!

捉泥鳅

自身极其欣赏的童年的抒写

徒手抓鱼好像不那么容易,不一会儿,大家就喊累,不知谁用手向我立即边撩水,我呢终将回敬他啊。于是乎,抓鱼变成了扳平街混战——打水仗。

其三只女生就两只男生准备翻墙上。大门口上课期间都是沿在,肯定是免克活动的。

可想而知,我们的结果。

怀念

夏天爱下雨,每次下得了雨我们尽管绕在街坊的不胜哥哥带我们失去捉泥鳅。

田边的稀泥里

手拉手捉泥鳅的伴儿你们好与否

冰暴也停止了

世家还叫着喝在:你来呀。追自己呀!

旷日持久的暑假好像也尚无几龙就是如终结了。

各处是泥鳅

那么时候的我们为就算是只有通过多少内裤

初二那年本身与了一个辅导班,补习英语和数学,是咱们学的老师办的。

次龙等天晴了,跟着大哥哥拿在自制的钓鱼竿,带在一瓶子的泥鳅去石头河钓鱼。

自家思慢慢来讲,讲为协调听,讲让喜欢听的人。

个子高的死去活来男生在咱们几乎只之扶植下,爬上了墙头,往生一致看,懵了。

说从童年之佳话,总有说勿收的言辞。

不行陪伴我走过童年之地方,十几年自己从不返回了了。

当河里里行动真的没有那么爱,不小心就是跌反河水里呛口水又攀起来。到最终大家的衣物都浸透透了。

听说,那个特别阿哥娶妻生子了,就当他结合的亚年他的爸爸癌症死亡了。

PS

真正就便是咱们那时候爱玩的事情。

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图