求助
我写的哥德巴赫猜想的验证代码怎么只能验证一位数?def gs (n):
if n%2==0 and n>2:
if n==4:
print(2,2)
else:
a=3
def zs(x):
global c
c=0
for v in range(1,x-1):
if not x%v==0:
c+=1
for x in range(n):
zs(a)
if c==0:
zs(n-a)
if c==0:
print(a,n-a)
break
a+=2
else:
print('不符合要求!')
gs(int(input('请输入>2的偶数')))
input('回车离开')
很久以前写的
#include <stdio.h>
int issh(int x)
{
//返回1 表示是一个素数
if(x<=1) return 0;
if(x>1) for(int i=2;i<x;i++) if(x%i==0) return 0;
return 1;
}
int main()
{
int i,j;
int k=0;
for(j=4;j<9999;j+=2)
{
for(i=1;i<j;i++)
{
if(issh(i)==1 && issh(j-i)==1)
{
printf("%d=%d+%d\n",j,j-i,i);
k++;
break;
}
}
if(k==0) printf("%d不能被分解成2个素数之和.\n",j);
}
return 0;
}
wp231957 发表于 2022-3-5 07:01
很久以前写的
#include
我的是python语言
你这个是c语言 爱因斯坦x 发表于 2022-3-5 13:27
我的是python语言
你这个是c语言
转成python 没啥难度吧
import math
def issh(x):
#返回1 表示是一个素数
if(x<=1): return 0
if(x>1):
for i in range(2,int(math.sqrt(x))+1):
if x%i==0:
return 0;
return 1;
for j in range(4,99,2):
k=0
for i in range(1,j+1):
if issh(i) and issh(j-i):
print("%d=%d+%d\n"%(j,j-i,i))
k+=1
break
if(k==0):
print("%d不能被分解成2个素数之和.\n"%j)
wp231957 发表于 2022-3-5 16:25
转成python 没啥难度吧
试试 额,我要的效果是我输入一个数它来找{:10_266:} 爱因斯坦x 发表于 2022-3-5 20:34
额,我要的效果是我输入一个数它来找
那不更简单了,连循环都省了 本帖最后由 wp231957 于 2022-3-12 20:39 编辑
爱因斯坦x 发表于 2022-3-5 20:34
额,我要的效果是我输入一个数它来找
import math
def issh(x):
#返回1 表示是一个素数
if(x<=1): return 0
if(x>1):
for i in range(2,int(math.sqrt(x))+1):
if x%i==0:
return 0
return 1
num=int(input("请输入一个大于4的偶数:"))
if num<4:num=4
if num%2:num+=1
k=0
for i in range(1,num+1):
if issh(i) and issh(num-i):
print("%d=%d+%d\n"%(num,num-i,i))
k+=1
break
if(k==0):
print("%d不能被分解成2个素数之和.\n"%num)
wp231957 发表于 2022-3-7 13:54
有点问题
我输入14
14原可以分成7 7,3 11
但结果是:14不能被分解成2个素数之和 爱因斯坦x 发表于 2022-3-12 19:47
有点问题
我输入14
14原可以分成7 7,3 11
第10行 是return 1 不知道为啥 网页把那个1给弄没了 wp231957 发表于 2022-3-12 20:39
第10行 是return 1 不知道为啥 网页把那个1给弄没了
谢谢,我试试 本帖最后由 爱因斯坦x 于 2022-3-12 20:52 编辑
wp231957 发表于 2022-3-12 20:39
第10行 是return 1 不知道为啥 网页把那个1给弄没了
我又改良了一下
import math
def issh(x):
#返回1 表示是一个素数
if(x<=1): return 0
if(x>1):
for i in range(2,int(math.sqrt(x))+1):
if x%i==0:
return 0
return 1
num=int(input("请输入一个大于2的偶数:"))
if num==4:
print(4=2+2)
else:
if num%2:num+=1
k=0
for i in range(1,num+1):
if issh(i) and issh(num-i):
print("%d=%d+%d\n"%(num,num-i,i))
k+=1
break
if(k==0):
print("%d不能被分解成2个素数之和.\n"%num)
页:
[1]