一个偶数总能表示两个素数之和

2024-01-24 22:58

本文主要是介绍一个偶数总能表示两个素数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于这次此小测试,主要求的是素数,还有当时素数的时候,另外一个数也需要是素数。

输入一个偶数,然后判断在这在这个范围内的素数。
先判断是否是素数,如果是素数,就将偶数减去这个素数,在判断减去后的数是否也为素数,如果也为素数,则输出

步骤:1,输入数值n
2.利用while(n>1)n-2,
3.判断【0,n】之间的范围内的数值。
4.每减去2(因为偶数为除了二外都不为素数),就判读这个数是否为素数,如果为素数,则将n减去这个素数,再判断减去后的数值是否也为素数,如果是的话,就输出

dex==0为素数,dex==1不为素数

代码:

public static int dex=0;public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("输入一个偶数:");Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int in = n;n--;xunhuan:while(n>1) {find(n);if(dex==0) {dex = 0;//将其定义为原来的数值,在放入判断素数函数中是否为素数。find(in-n);if(dex==0)System.out.println(in+"这个偶数可以被素数"+n+"和素数"+(in-n)+"相加得出!");}dex=0;n=n-2;//每次都为奇数,不用算偶数if(n<(in/2))break xunhuan;}}private static void find(int n) {//求素数函数// TODO Auto-generated method stubint i;for(i = 2;i<n;i++) {if(n%i==0)dex=1;//dex为1说明不是素数}}

此代码有运用了Math.sqrt(double n),这是一个求平方根函数,Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理。具体就是对i开方, i=2时也就是根号2=1.414。

用开平方根函数的好处
你想想吧,如果判断100是否为素数,那就是用2、3、4……去除100,只要有一个被整除了,那100就不是素数!sqrt(100)是求100的平方根的意思,100的平方根是10,用2、3、4……10去除100就可以了,用不着再用11、12、13……99去除100了。为什么呢?因为一个数是它的两个平方根之积,用其中一个平方根之内的各个数遍历了,难道还有漏网的数未去除“这个数”?比如100吧,找个大于其平方根10的好说的数20为例,说没有必要用20去除100了就是因为你已经用5除过了,100不是素数!

public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("输入");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();for(int i =2;i<num;i++) {int j = num-i;//另一个数为另一个数得出if(isPrime(i)&&isPrime(j)) {//当两个都为素数时System.out.println("偶数"+num+"="+i+"+"+j);}}}private static boolean isPrime(int n) {// TODO Auto-generated method stubboolean flag = true;if(n<2)return false;else {for(int i =2;i<=Math.sqrt(n);i++) {//为求平方根。if(n%i==0) {flag=false;//为false的时候,则说明不是素数break;}}}return flag;}

这篇关于一个偶数总能表示两个素数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/641286

相关文章

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho