qiantianxianzi 2021-11-26 16:27 采纳率: 81.8%
浏览 151
已结题

运用python语言编写下面程序

问题遇到的现象和发生背景

编程实现一个函数isPrime(x),判断整数x是否为素数,是输出1,否则输出0
2、求出所有两位数的绝对素数的程序。
绝对素数:一个素数,当它的数字位置对换以后仍为素数,这样的数称为绝对素数。例如17和71都是素数,所以17和71是绝对素数
注意: 每一对绝对素数的输出格式为:17和71是绝对素数

3、 验证哥德巴赫猜想,即:任何一个大于或等于6的偶数,可以表示成两个素数之和。例如:11111112 = 11 + 11111101
定义函数Goldbach(N)将整数N分解成两素数之和以验证哥德巴赫猜想,你需要补充完整该函数代码。

问题相关代码,请勿粘贴截图

3定义一验证歌德巴赫猜想函数




```def Goldbach(N):  # 将N分解成两素数之和
    if N < 6 or N % 2 == 1:  # 若N小于6或N为奇数
        print('N应该是大于等于6的偶数')
    else:
        # 循环判断,得到符合要求的小于N的两个素数,并打印
        for x in range(2, N //2 + 1):  # 想想为什么是从2到N/2
            # 调用isPrime函数得到符合要求的小于N的两个素数
          ######## begin ###########
           
                
          ######## end ###########
                print(N, '=', x, '+', N - x)
                break
for num in [88, 68, 50, 1000]:
    Goldbach(num) 
print('*'*20)
```python


运行结果及报错内容
我的解答思路和尝试过的方法

def isPrime(int(x)):

if(x < 2):

    return 0;

for i in range(2,x) :

    if x % i == 0:
    
        return 0;
    

return 1;

x=eval(input())
y=(x%10)*10+x/10
result1=isPrime(x)
result2=isPrime(y)
print(result1,result2)

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-11-26 16:31
    关注
    def isPrime(x):
        if x < 2:
            return 0
        for i in range(2, x):
            if x % i == 0:
                return 0
        return 1
    l=[]
    for x in range(10,100):
        y=(x%10)*10+x//10
        if x not in l and y not in l and x!=y and isPrime(x) and isPrime(y):
            print('%d和%d是绝对素数'%(x,y))
            l.append(x)
    
    def isPrime(x):
        if x < 2:
            return 0
        for i in range(2, x):
            if x % i == 0:
                return 0
        return 1
    def Goldbach(N):  # 将N分解成两素数之和
        if N < 6 or N % 2 == 1:  # 若N小于6或N为奇数
            print('N应该是大于等于6的偶数')
        else:
            # 循环判断,得到符合要求的小于N的两个素数,并打印
            for x in range(2, N // 2 + 1):  # 想想为什么是从2到N/2
                # 调用isPrime函数得到符合要求的小于N的两个素数
                ######## begin ###########
                if isPrime(x) and isPrime(N-x):
                ######## end ###########
                    print(N, '=', x, '+', N - x)
                    break
    
    
    for num in [88, 68, 50, 1000]:
        Goldbach(num)
    print('*' * 20)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作
  • ¥15 做过TCL海信电视小米电视相关影视会员软件私我
  • ¥15 Mapreduce是正常的,在运行其他jar包时并没有任何问题,只是在做LogCount.jar 时出的问题。如图所示
  • ¥15 ImportError: DLL load failed while importing _iterative: 找不到指定的模块。
  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多