yangheng48 发表于 2021-11-24 20:50

Python-重新理解素数与验证哥德巴赫猜想

### 重新理解素数

<hr>

###### 重新定义素数的取法

```apl
素数验证,如果说A是素数,我们用它分别除以它根号以下的素数,只要都不能整除,那么,A就是素数。

解析:

如,验证97是不是素数,因为,√97≈9.8,小于9.8的素数有:2,3,5,7,因为,97分别除以这些数都不能整除,所以,97是素数。
```

###### 输出素数

```python
rec = int(input())

for i in range(2,rec):
    for j in range(2,i):
      if i%j==0:
            break
    else:
      print(i)
```



###### 指定数下 范围输出素数

```python
import math
n = int(input())

for i in range(2,n):
    for j in range(2,int(math.sqrt(i)+1)):
      if i % j ==0:
            break
    else:
      print(i)
```



###### 判断素数 1 (error)

```python
# 输出 intstr 的平方根 下的素数 ,并与之整除,若能整除,则为合数,不能则为素数
# 并判断是否为素数
import math

intstr = int(input())
reclist = []

for i in range(2,int(math.sqrt(intstr))):
    for j in range(2,i):
      if i%j==0:
            break
    else:
      reclist.append(i)
print(reclist)

for k in reclist:
    if intstr % k == 0:
      break
else:
    print("是素数")
```

###### 函数判断素数

```python
import math

def isPrime(n):
    if n <=1:
      return False

    for i in range(2,int(math.sqrt(n) +1 )):
      if n % i ==0:
            return False
      else:
            return True
res = isPrime(4)
print(res)
```

##### 在证明猜想成立的过程下,建议先看上篇笔记 (重新定义素数的取法)



###### 小素数

```apl
小素数就是偶数平方根以下的素数。
如,偶数68=7+61=31+37,按猜想为2对,我这里称它为1个素数对:31+37。
```

```apl
2个数相加等于偶数的组合这里称为数对:204/2=102个数对。
```
javascript:;


```apl
由上图可知:
        102个数对中存在由2,3,5,7,11,13,这些素因子组成的合数形成的数对,我们把它们进行筛出后,剩余的就是素数对了。
```

###### 删除含素因子2的合数组成的数对

```apl
        因偶数204/2=102,即,用2乘以1到102的得数,都能被2整除,我们都把它们视为含素因子2的合数,共102/2=51个数对,剩余51个数对;删除数对的计算式为:102*1/2=51对。即,当素因子N,能够整除偶数时,素因子N删除偶数数对的1/N,剩余数对的(N-1)/N。
```

###### 删除含素因子3的合数组成的数对

```apl
主要:删除数对的计算式为51/3=17对,同理:当素因子N,能够整除偶数时,素因子N删除偶数数对的1/N,剩余数对的(N-1)/N。

解析:因偶数204/3=68,素因子2删除能被2整除的数后,68内剩余的数为奇数共68/2=34个奇数,因偶数204能被3整除,即能被3整除的数是对称组合的,34个数组成34/2=17个数对,删除后还剩余51-17=34个数对;
```

###### 删除含素因子5的合数组成的数对

```apl
主要:计算式为34*2/5=13.6对。当素因子N,不能够整除偶数时,素因子N删除偶数数对的2/N,剩余数对的(N-2)/N,下同。

解析:因偶数204/5≈40(不能整除),在40之内,素因子2和3删除后的剩余数为:1,5,7,11,13,17,19,23,25,29,31,35,37,我们把素数乘以这13个数都视为合数(1*5不属于,也删除。下同),删除13个数对,还剩余21对
```

###### 删除含素因子7的合数组成的数对

```apl
主要:按计算式为21*2/7=6对,删除数与计算数相符。还剩余21-6=15对;

解析:因偶数204/7≈29(不能整除),在29之内不能被素数2,3,5整除的:1,11,13,19,23,29分别乘以7共删除6个数对,其实,在29之内不能被素数2,3,5整除的数还有7和17乘以7尾数为9,因偶数204-尾数9,其对称数已被5删除
```

###### 删除含素因子11的合数组成的数对

```apl
        因偶数204/11≈18(不能整除),在18之内不能被素数2,3,5,7整除的:1,11,13,17分别乘以11共删除4对。按计算式为15*2/11≈2.7,实际删除4对,还剩余15-4=11对;
```

…………

###### Finally

```apl
        总计算式为204*(1/2)*(1/2)*(2/3)*(3/5)*(5/7)*(9/11)*(11/13)=10.08,实际为10对,与计算数基本相符。所用计算公式为(N-1),若不能整除整除原数时,(N-2)

说明:第一个1/2为偶数组成数对的计算,第二个1/2为素因子2删除后的剩余数对,2/3为素因子3删除后的剩余数对,素因子2,3都能整除偶数,剩余数对为(N-1)/N;后面的素因子不能整除偶数剩余数对为(N-2)/N。
```

天南地北一群魔 发表于 2021-11-24 21:00

学习学习

nuoan 发表于 2021-11-25 08:33

Thanks for sharing
页: [1]
查看完整版本: Python-重新理解素数与验证哥德巴赫猜想