1007 素数对猜想

1007 素数对猜想

题目描述:

让我们定义d**n为:d**n=p**n+1−p**n,其中p**i是第i个素数。显然有d1=1,且对于n>1有d**n是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

思路:

先把素数求出来放一个切片里面,然后让每个相邻的切片相减看看是不是等于2

代码:

package main

import (
    "fmt"
    "math"
)

func main()  {
    var n,sum,num int
    var p []int
    fmt.Scanf("%d",&n)
    if n<=3{
        fmt.Println(0)
        return
    }
    for i:=2;i<=n;i++{
        if prime(i)==true{
            p=append(p,i)
            num++
        }
    }
    for i:=0;i<num-1;i++{
        if p[i+1]-p[i]==2{
            sum++
        }
    }
    fmt.Println(sum)

}

func prime(n int) bool{
    for i:=2;i<=int(math.Sqrt(float64(n)));i++{
        if n%i==0{
            return false
        }
    }
    return true
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!