鱼C论坛

 找回密码
 立即注册
查看: 1962|回复: 11

[已解决]求助

[复制链接]
发表于 2022-3-4 20:38:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我写的哥德巴赫猜想的验证代码怎么只能验证一位数?
  1. def gs (n):
  2.     if n%2==0 and n>2:
  3.         if n==4:
  4.             print(2,2)
  5.         else:
  6.             a=3
  7.             def zs(x):
  8.                 global c
  9.                 c=0
  10.                 for v in range(1,x-1):
  11.                     if not x%v==0:
  12.                         c+=1
  13.             for x in range(n):
  14.                 zs(a)
  15.                 if c==0:
  16.                     zs(n-a)
  17.                     if c==0:
  18.                         print(a,n-a)
  19.                         break
  20.                     a+=2
  21.     else:
  22.         print('不符合要求!')
  23. gs(int(input('请输入>2的偶数')))
  24. input('回车离开')
复制代码
最佳答案
2022-3-7 13:54:20
本帖最后由 wp231957 于 2022-3-12 20:39 编辑
爱因斯坦x 发表于 2022-3-5 20:34
额,我要的效果是我输入一个数它来找

  1. import math

  2. def issh(x):
  3.     #返回1 表示是一个素数
  4.     if(x<=1): return 0
  5.     if(x>1):
  6.         for i in range(2,int(math.sqrt(x))+1):
  7.             if x%i==0:
  8.                 return 0
  9.     return 1
  10.         
  11. num=int(input("请输入一个大于4的偶数:"))
  12. if num<4:num=4
  13. if num%2:num+=1
  14. k=0
  15. for i in range(1,num+1):
  16.     if issh(i) and issh(num-i):
  17.         print("%d=%d+%d\n"%(num,num-i,i))
  18.         k+=1
  19.         break
  20. if(k==0):
  21.     print("%d不能被分解成2个素数之和.\n"%num)
  22.    

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-5 07:01:54 From FishC Mobile | 显示全部楼层
很久以前写的
#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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2022-3-5 13:27:42 | 显示全部楼层
wp231957 发表于 2022-3-5 07:01
很久以前写的
#include

我的是python语言
你这个是c语言
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-5 16:25:25 | 显示全部楼层
爱因斯坦x 发表于 2022-3-5 13:27
我的是python语言
你这个是c语言

转成python 没啥难度吧

  1. import math

  2. def issh(x):
  3.     #返回1 表示是一个素数
  4.     if(x<=1): return 0
  5.     if(x>1):
  6.         for i in range(2,int(math.sqrt(x))+1):
  7.             if x%i==0:
  8.                 return 0;
  9.     return 1;

  10.         
  11. for j in range(4,99,2):
  12.     k=0
  13.     for i in range(1,j+1):
  14.        if issh(i) and issh(j-i):
  15.             print("%d=%d+%d\n"%(j,j-i,i))
  16.             k+=1
  17.             break
  18.    
  19.     if(k==0):
  20.         print("%d不能被分解成2个素数之和.\n"%j)
  21.       

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-5 20:32:34 | 显示全部楼层
wp231957 发表于 2022-3-5 16:25
转成python 没啥难度吧

试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-5 20:34:51 | 显示全部楼层
额,我要的效果是我输入一个数它来找
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-5 20:47:08 From FishC Mobile | 显示全部楼层
爱因斯坦x 发表于 2022-3-5 20:34
额,我要的效果是我输入一个数它来找

那不更简单了,连循环都省了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-7 13:54:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wp231957 于 2022-3-12 20:39 编辑
爱因斯坦x 发表于 2022-3-5 20:34
额,我要的效果是我输入一个数它来找

  1. import math

  2. def issh(x):
  3.     #返回1 表示是一个素数
  4.     if(x<=1): return 0
  5.     if(x>1):
  6.         for i in range(2,int(math.sqrt(x))+1):
  7.             if x%i==0:
  8.                 return 0
  9.     return 1
  10.         
  11. num=int(input("请输入一个大于4的偶数:"))
  12. if num<4:num=4
  13. if num%2:num+=1
  14. k=0
  15. for i in range(1,num+1):
  16.     if issh(i) and issh(num-i):
  17.         print("%d=%d+%d\n"%(num,num-i,i))
  18.         k+=1
  19.         break
  20. if(k==0):
  21.     print("%d不能被分解成2个素数之和.\n"%num)
  22.    

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 19:47:38 | 显示全部楼层

有点问题
我输入14
14原可以分成7 7,3 11
但结果是:14不能被分解成2个素数之和
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-12 20:39:44 | 显示全部楼层
爱因斯坦x 发表于 2022-3-12 19:47
有点问题
我输入14
14原可以分成7 7,3 11

第10行 是  return 1   不知道为啥   网页把那个1  给弄没了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 20:42:56 | 显示全部楼层
wp231957 发表于 2022-3-12 20:39
第10行 是  return 1   不知道为啥   网页把那个1  给弄没了

谢谢,我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-12 20:50:52 | 显示全部楼层
本帖最后由 爱因斯坦x 于 2022-3-12 20:52 编辑
wp231957 发表于 2022-3-12 20:39
第10行 是  return 1   不知道为啥   网页把那个1  给弄没了


我又改良了一下
  1. import math

  2. def issh(x):
  3.     #返回1 表示是一个素数
  4.     if(x<=1): return 0
  5.     if(x>1):
  6.         for i in range(2,int(math.sqrt(x))+1):
  7.             if x%i==0:
  8.                 return 0
  9.     return 1
  10.         
  11. num=int(input("请输入一个大于2的偶数:"))
  12. if num==4:
  13.     print(4=2+2)
  14. else:
  15.     if num%2:num+=1
  16.     k=0
  17.     for i in range(1,num+1):
  18.         if issh(i) and issh(num-i):
  19.             print("%d=%d+%d\n"%(num,num-i,i))
  20.             k+=1
  21.             break
  22.     if(k==0):
  23.         print("%d不能被分解成2个素数之和.\n"%num)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表