用Golang随意地计算了素数

在小说中出现的数学家角色通常都对素数有特别的追求,看起来很酷。
顺便一提,我突然想到,“如果我们在素数上取得了这样一个限制,那么就可以很容易地编写出一个能计算素数的程序,因为能被这个素数整除的数一定不是素数。”于是我试着写了一下。
顺便一提,我还想试试Golang,所以用Golang写了这个程序。

直接说结果

结果虽然有所改动,但还是变得非常沉重,超出了一定程度。

另外,如果有一个能直接输出素数的Golang库的话,我觉得那做法真是愚蠢,所以我还是做了一些调查(虽然结果似乎找不到),发现素数界好像相当严肃,让人有点害怕!所以我决定不加素数的标签。

我制作的东西 (Wǒ de

代码 (daima)

package main

import (
    "fmt"
    "math"
)

func main() {
    prime_numbers := []float64{2}
    var test_max_number float64 = float64(math.Pow(10, 5))
    var n,m,dm,prime_number float64

    for n = 1; n < test_max_number; n++ {
        m = (n * 2) + 1

        is_not_prime := false
        for _, prime_number = range prime_numbers{
            dm = m / prime_number
            if dm == math.Ceil(dm) {
                is_not_prime = true
                break
            }
        }

        if is_not_prime == false{
            prime_numbers = append(prime_numbers, m)
        }

    }

    fmt.Println(prime_numbers)

}

执行环境

    • macOS High Sierra Version 10.13.1

 

    go version go1.9.2 darwin/amd64

经过和结果 guò hé jié guǒ)

    • まずは20(10の1乗 * 2)までの状況で開発し、計算結果を目視で確認していける!って思った。

 

    • 次に2,000(10の3乗 * 2)くらいまで計算させてwikipediaの素数の記事と比べてみたらだいたいあってたのでこれは多分ほんといける!って思った。

 

    次に20万(10の5乗 * 2)にしたところで1秒くらいで答えが返ってきたけど、乗数を1つあげて200万にしたところ10秒待っても返ってこなくなり、そこで諦めた。

关于素数领域似乎很专业的行业

我使用Golang编写了一个能够在”2.1秒内计算一百万个素数”的”无限数列”,基于”埃拉托斯特尼筛法”实现。

还有其他的选择。

我用 Golang 创造了一个“无限序列”,可以使用“埃拉托斯特尼筛法”在1.3秒内计算出100万个素数。

等等。

用Python/Ruby/PHP/Golang(Go)处理质数

以及。

「埃拉托斯特尼筛」这个名字听起来真帅。

广告
将在 10 秒后关闭
bannerAds