PTA 7-4 素数等差数列 (20 分)

作者: freesan44 | 来源:发表于2021-11-09 10:10 被阅读0次

题目

2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存在 n 项全由素数组成的等差数列。例如 { 7,37,67,97,127,157 } 是 n=6 的解。本题就请你对给定的 n 在指定范围内找出一组最大的解。

输入格式:
输入在一行中给出两个正整数:n(≤10)为等差素数数列的项数; MAXP (2≤MAXP<10
5
)为数列中最大素数的上界。

输出格式:
如果解存在,则在一行中按递增序输出等差最大的一组解;若解不唯一,则输出首数最大的一组解。若解不存在,则输出不超过 MAXP 的最大素数。同行数字间以一个空格分隔,行首尾不得有多余空格。

输入样例 1:
5 1000
结尾无空行
输出样例 1:
23 263 503 743 983
结尾无空行
输入样例 2:
10 200
结尾无空行
输出样例 2:
199
结尾无空行

解题思路

n, MAXP = map(int,input().split())
# n, MAXP = map(int,"5 1000".split())
# n, MAXP = map(int,"10 2".split())


import math
def isSushu(input:int)->bool:
    if input == 2 or input == 3 or input == 1:
        return True
    sqrtInt = int(math.sqrt(input))
    for i in range(2,sqrtInt+1):
        if input%i == 0:
            return False
    return True
sushuList = []
for i in range(2,MAXP+1):
    if isSushu(i) == True:
        sushuList.append(i)
# print(sushuList)
if len(sushuList) == 0:
    print("")
resList = []
for index,val in enumerate(sushuList):
    for i in sushuList[index+1:]:
        dengcha = i - val
        shifoucunzai = True##是否存在等差数列
        for chengshu in range(1,n):
            dengchashu = val + dengcha*(chengshu)
            if dengchashu not in sushuList:
                shifoucunzai = False
                break
        if shifoucunzai == True:
            resList.append((val, dengcha))
# 有解的数组
resList.sort(key= lambda x:(-x[1],-x[0]))
# print(resList)
if len(resList)>0:#如果解存在,则在一行中按递增序输出等差最大的一组解;若解不唯一,则输出首数最大的一组解。
    num,cha = resList[0]
    res = [str(num+cha*i) for i in range(n)]
    print(" ".join(res))
else:
    try:
        print(str(sushuList[-1]))
    except:
        print("")

相关文章

  • PTA 7-4 素数等差数列 (20 分)

    题目 2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存...

  • PTA 7-4 胖达与盆盆奶 (20 分)

    题目 大熊猫,俗称“胖达”,会排队吃盆盆奶。它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖...

  • 1013

    //1013 数素数 (20)(20 分)//令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请...

  • 7-4 素数环

    https://vjudge.net/problem/UVA-524 就是一个简单的回溯法 注意1是固定的 所以传...

  • 关于素数的编程

    题目 设一个等差数列,首元素为367,公差为186, 现在要求找出属于该等差数列中的第151个素数并输出。 编辑 ...

  • PTA 7-4 最近的斐波那契数 (20 分)

    题目 斐波那契数列 Fn 的定义为:对 n≥0 有 Fn+2 =Fn+1 +Fn ,初始值为 F0 =0 和 F1...

  • 1013 数素数 (20 分)

  • PTA 1029 旧键盘 (20 分)

    题目 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入...

  • PTA 1043 输出PATest (20 分)

    题目 给定一个长度不超过 104的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest....

  • PTA 1064 朋友数 (20 分)

    题目 如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 ...

网友评论

    本文标题:PTA 7-4 素数等差数列 (20 分)

    本文链接:https://www.haomeiwen.com/subject/wfvnwltx.html