OJ Summation of Four Primes

news2024/12/23 13:16:48

1.题目

题目描述

        Euler proved in one of his classic theorems that prime numbers are infinite in number.
But can every number be expressed as a summation of four positive primes? I don’t know
the answer. May be you can help!!! I want your solution to be very efficient as I have a
386 machine at home. But the time limit specified above is for a Pentium III 800
machine. The definition of prime number for this problem is “A prime number is a
positive number which has exactly two distinct integer factors”. As for example 37 is
prime as it has exactly two distinct integer factors 37 and 1.

输入

        The input contains one integer number N (N<=10000000) in every line. This is the
number you will have to express as a summation of four primes. Input is terminated by
end of file.

输出

        For each line of input there is one line of output, which contains four prime numbers
according to the given condition. If the number cannot be expressed as a summation of
four prime numbers print the line “Impossible.” in a single line. There can be multiple
solutions. Any good solution will be accepted.

样例输入

24
36
46

样例输出

2 2 3 17
2 2 3 29
2 2 5 37

2.中文翻译

题目描述

    欧拉在他的一个经典定理中证明了素数在数量上是无限的。但是,每个数字都可以表示为四个正素数的总和吗?我不知道答案。希望你能帮忙!!!我希望你的解决方案非常有效,因为我有386机器在家。但上面规定的时间限制是针对奔腾III 800 机器。这个问题的素数的定义是“素数是正的整数,正好有两个不同的整数因子”。例如,37是素数,因为它正好有两个不同的整数因子37和1。

输入

        输入在每行中包含一个整数N(N<=100000)。这是你必须把这个数字表示为四个素数的总和。输入由终止文件末尾。

输出

        每一行输入都有一行输出,根据给定的条件,其中包含四个素数。如果数字不能表示为四个素数在一行中打印出“ Impossible.”一行。可以有多个解决方案。任何好的解决方案都会被接受。

样例输入

24
36
46

样例输出

2 2 3 17
2 2 3 29
2 2 5 37

3.思路代码(打印n以内所有情况的代码)(看注释即可)

下面的程序是打印n以内的所有可能情况

#encoding=utf-8
#利用欧拉筛 快速筛选包含n的n以内的所有素数
def euler_sieve(n):
    primes=[]
    status = [False] * 2 + [True] * (n - 1)
    for i in range(2,n+1):
        if status[i]:
            primes.append(i)
        for pj in primes:
            if pj * i >n:
                break
            status[pj*i]= False
            if i % pj == 0:
                break
    return primes

#主程序
while True:
    #n表示输入的数
    n=int(input())

    #kk用来接收欧拉筛出的素数表
    kk=euler_sieve(n)

    #asn用来存储所有可能的结果
    asn=[]

    #found=1表示找到了解
    found=0

    #遍历素数表 下面的遍历思想和m=sqrt(n)的思想是一致的
    for p1 in kk:
        if p1 > n//4 +1:
            break
        for p2 in kk:
            if p2 >(n-p2)//3 +1:
                break
            for p3 in kk:
                if p3>(n-p1-p2)//2 +1:
                    break
                p4=n-p1-p2-p3
                if p4 in kk:
                    asn.append([p1,p2,p3,p4])
                    found=True
    #如果找到
    if found :
        #下面首先要进行去重操作 :就是[2,2,3,17] 和[2,3,17,2] 其实是一种情况
        #去重操作利用的是set集合元素不可重复的性质
        sortedlist=[]
        #先将asn list 中的所有列表元素排序 然后转化为元组,因为list不可hash
        for i in asn:
            sortedlist.append(tuple(sorted(i)))

        #然后利用列表的性质去重
        unique_list=list(set(sortedlist))

        #打印结果
        for j in unique_list:
            print(j)

    else:
        print("Impossible.")




输入以及输出:

24

(3, 3, 7, 11)
(3, 7, 7, 7)
(3, 5, 5, 11)
(5, 5, 7, 7)
(2, 2, 3, 17)
(3, 3, 5, 13)
(2, 2, 7, 13)

36

(3, 5, 11, 17)
(5, 7, 7, 17)
(2, 2, 3, 29)
(3, 3, 11, 19)
(5, 5, 7, 19)
(5, 5, 13, 13)
(7, 7, 11, 11)
(3, 7, 13, 13)
(5, 7, 11, 13)
(3, 7, 7, 19)
(3, 5, 5, 23)
(3, 3, 7, 23)
(3, 3, 13, 17)
(2, 2, 13, 19)

46

(2, 2, 11, 31)
(5, 7, 17, 17)
(5, 5, 17, 19)
(2, 2, 5, 37)
(5, 11, 13, 17)
(3, 5, 19, 19)
(3, 7, 13, 23)
(7, 11, 11, 17)
(3, 3, 3, 37)
(3, 3, 11, 29)
(3, 11, 13, 19)
(7, 7, 13, 19)
(3, 3, 17, 23)
(2, 2, 13, 29)
(3, 5, 7, 31)
(11, 11, 11, 13)
(2, 2, 19, 23)
(5, 5, 13, 23)
(3, 7, 7, 29)
(5, 5, 5, 31)
(5, 5, 7, 29)
(5, 7, 11, 23)
(3, 7, 17, 19)
(5, 11, 11, 19)

但是题目只要求我们打印一种情况就可以了,意思就是找到一个结果就里面结束遍历。

4.代码(题目结果代码)

#encoding=utf-8
#利用欧拉筛 快速筛选包含n的n以内的所有素数
def euler_sieve(n):
    primes=[]
    status = [False] * 2 + [True] * (n - 1)
    for i in range(2,n+1):
        if status[i]:
            primes.append(i)
        for pj in primes:
            if pj * i >n:
                break
            status[pj*i]= False
            if i % pj == 0:
                break
    return primes

#主程序
while True:
    #n表示输入的数
    n=int(input())

    #kk用来接收欧拉筛出的素数表
    kk=euler_sieve(n)

    #asn用来存储所有可能的结果
    asn=[]

    #found=1表示找到了解
    found=0

    #遍历素数表 下面的遍历思想和m=sqrt(n)的思想是一致的
    for p1 in kk:
        if p1 > n//4 +1:
            break
        for p2 in kk:
            if p2 >(n-p2)//3 +1:
                break
            for p3 in kk:
                if p3>(n-p1-p2)//2 +1:
                    break
                p4=n-p1-p2-p3
                if p4 in kk:
                    print(p1,p2,p3,p4)
                    found=True
                    break
            if found:
                break
        if found:
            break

    if not found:
        print("Impossible.")




输出结果:

5.需要注意的地方

使用集合来剔除重复元素组的情况

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

弹性盒子(display: flex)布局超全讲解|Flex 布局教程

文章目录 什么是弹性布局&#xff1f;弹性布局的特点&#xff1f;容器的属性justify-contentalign-itemsflex-directionflex-wrapflex-flowalign-contentorder属性flex-grow属性flex-shrink属性flex-basis属性flex属性align-self属性 什么是弹性布局&#xff1f; 弹性布局&…

我被今年就业难度震惊到了

随着毕业季到来&#xff0c;今年高校毕业生就业问题正在被越来越多的人关注。年年都是最难就业季&#xff0c;但今年却格外不同寻常的难。大家都知道 2022 年毕业生人数历史上首次突破千万。而今年毕业生人数&#xff0c;高达 1158 万人&#xff0c;史无前例的多。加上海外留学…

【Unity Shader】从入门到着魔(2)用C#画一个立方体

文章目录 一、构成一个立方需要多少个顶点?二、定义三角面的索引数组:三、定义UV坐标数组:四、最后构建Mesh:五、完整代码:一、构成一个立方需要多少个顶点? 这个问题是面试经常被问到的题。如上图,我们知道在几何中立方体有6个面,8个顶点。但在图形学中,顶点指的是模…

项目管理:制定项目计划,这些作用不可忽视

做任何事&#xff0c;做计划不可缺少&#xff0c;没有计划&#xff0c;就没有控制&#xff0c;编制计划可帮助项目管理团队提前进行思考。 制定计划后&#xff0c;还需要对项目计划进行跟踪&#xff0c;这样才不会让计划白做。 你知道项目计划进行跟踪&#xff0c;有哪些不可…

更新公告:Airtest更新至1.2.10.2版本

1. 前言 本次是Airtest库更新&#xff0c;版本提升至1.2.10.2&#xff0c;内容主要是Android录屏功能的改动。 2. 更改部分 在Airtest1.2.9中提供的cv2模式已经被舍弃&#xff0c;因为容易引发错误&#xff0c;效果也不如ffmpeg&#xff1b; 只有Android需要mode参数&#x…

java8 (jdk 1.8) 新特性 ——初步,发现不一样的新特性

前言 3202 年了&#xff0c;现在市面上的公司几乎都是 jdk1.8, 有也是极少数在用java7 , 即使是一些传统企业&#xff0c;在技术革新方面也很重视&#xff0c;毕竟现在是大数据时代 那么java8 有哪些新特性呢&#xff1f;换句话说为什么在码界 这么受欢迎&#xff01;&#xf…

NLP:词义分布的空间维度——从文本符号到词向量表征

自然语言处理的前提是文本表示&#xff08;Representation&#xff09;&#xff0c;即如何将人类符号化的文本转换成 计算机所能“理解”的表征形式。早期的自然语言表征主要采用离散表示。近年来&#xff0c;随着深度 学习的不断发展&#xff0c;基于神经网络的分布式词向量技…

对象存储?CRUD Boy实现对文件的增删改查

大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 以下是正文&#xff01; 对象存储是什么&#xff1f…

代码随想录算法训练营第五十九天|503.下一个更大元素II|42. 接雨水

LeetCode503.下一个更大元素II 基本思路&#xff1a;本题思路与739.每日方法思路相似&#xff0c;但是需要使用到循环数组&#xff0c;将两个nums数组拼接在一起&#xff0c;使用单调栈计算出每一个元素的下一个最大值&#xff0c;最后再把结果集即result数组resize到原数组大…

java 高校宿舍管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 高校宿舍管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

第六章 番外篇:webdataset

参考教程&#xff1a; https://github.com/pytorch/pytorch/issues/38419 https://zhuanlan.zhihu.com/p/412772439 https://webdataset.github.io/webdataset/gettingstarted/ 文章目录 背景WebDatasetwebdataset的生成webdataset的加载示例代码 背景 训练数据通常是以个体的…

霹雳吧啦 目标检测 学习笔记

霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频 目标检测篇github地址&#xff1b;GitHub - WZMIAOMIAO/deep-learning-for-image-processing: deep learning for image processing including classification and object-detection etc. 数据集 实例分割vs语义分割&a…

【强烈推荐】 十多款2023年必备国内外王炸级AI工具 (免费 精品 好用) 让你秒变神一样的装逼佬感受10倍生产力 (7) AI语言模型

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

云安全的第一站:CSPM

在企业数字化转型和云计算技术的加持下&#xff0c;企业上云趋势势不可挡。与此同时&#xff0c;数据量加大&#xff0c;网络攻击日趋频繁&#xff0c;对企业来说&#xff0c;包括云计算安全在内的网络安全部署的重要性日益显现。 在Gartner2022年CIO技术执行官问卷调查中&…

chatgpt赋能python:Python怎么绕过短信验证

Python怎么绕过短信验证 短信验证以及其他形式的验证码已经成为了许多网站和应用程序保护用户隐私的常见方式。然而&#xff0c;对于某些特定的情况&#xff0c;用户可能需要绕过这些验证码&#xff0c;例如自动化测试或者爬取数据。那么&#xff0c;在Python中&#xff0c;我…

安装Hive

安装Hive 准备 安装Java环境&#xff1a;Hive需要Java环境支持&#xff0c;所以需要先安装Java。安装文档&#xff1a;http://t.csdn.cn/deBJu 安装MySQL数据库。http://t.csdn.cn/d24pN 下载Hive 下载Hive的二进制文件。 链接&#xff1a;https://pan.baidu.com/s/1fdg7…

管理类联考——英语二——技巧篇——写作——书信作文——经典方法论

第一节 书信作文谋篇布局 考研英语从2005年开始考查书信作文&#xff0c;迄今为止共考查过几十次。书信作文考查的信件种类繁多&#xff0c;其中建议信是考查最为频繁的信件类型。从考查内容来看&#xff0c;校园学习生活、职业发展、民生热点成为重点考查对象&#xff0c;这一…

hadoop 相关环境搭建

21.Windows下安装Hadoop&#xff1b; Hive MySQL版_hadoop hive windows安装_学无止境的大象的博客-CSDN博客 https://www.cnblogs.com/liugp/p/16244600.html 备注。因为beeline一直报错&#xff0c;最有一怒之下把hive的lib下所有jar都拷贝到hadoop的share\hadoop\common\lib…

2023 年 5 大机器人趋势

原创 | 文 BFT机器人 国际机器人联合会报告 法兰克福&#xff0c;2023 年 2 月 16 日——全球操作机器人的存量创下约 350 万台的新纪录——安装价值估计达到 157 亿美元。国际机器人联合会分析了 2023 年影响机器人技术和自动化的 5 大趋势。 2023 年 5 大机器人趋势 © 国…

2000-2021年全国1km分辨率的逐日PM10栅格数据

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们分享了来自于Zendo平台的1km分辨率的PM2.5栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff1a; 2000-2021年全国1km分辨率的逐日PM2.5栅格数据 2000-2021年全国1km分辨率的逐月PM2.5栅格…