JAVA筑基100例第2题判断101200之间有多少个素数
作者简介:大家好,我是小虚竹。Java领域优质创作者,CSDN博客专家,华为云享专家,掘金年度人气作者,阿里云专家博主,51CTO专家博主
技术活,该赏
点赞收藏再看,养成习惯
零、前言
今天是学习JAVA语言打卡的第2天,我的学习策略很简单,题海策略费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着JAVA语言已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。一、题目描述
题目:判断101200之间有多少个素数,并输出所有素数。二、解题思路:循环法
素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。
判断素数的方法:从2到n1判断有没有能整除n的数。如果有,则不是素数,否则,是素数三、代码详解publicclassBasics02{publicstaticvoidmain(String〔〕args){inti,j;从101~200进行筛选for(i101;i200;i){从2~i1的值for(j2;ji1;j){if(ij0){i与j互相取余,如果余数为0则肯定不是素数,跳出循环break;}}if(ij){如果i等于j则说明完成了从2~i1的循环,说明每一次取余的值都不是0。结果肯定是素数System。out。println(i是素数);}}}}
解法二:循环对半法思路
素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。从2到n1判断有没有能整除n的数。每拿到一个数,判断该数是否是素数;
从2开始,遍历到该数的一半的数据,看是否有数据可以整除它,有就不是素数,没有就是素数。
注:为什么是该数的一半,因为素数的特性,那肯定不能被2整除了,被2后面的数整除得到的数据肯定小于该数的一半。
这种写法会少循环一半的数据。提高效率。代码详解publicclassBasics022{publicstaticvoidmain(String〔〕args){inti,j;从101~200进行筛选for(i101;i200;i){标记位当前的数是素数booleanflagtrue;从2~i1的值for(j2;ji2;j){if(ij0){i与j互相取余,如果余数为0则肯定不是素数,跳出循环flagfalse;break;}}if(flag){根据标记位flag的结果。true结果肯定是素数System。out。println(i是素数);}}}}
解法三:开方法思路
素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。开方求解原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行。证明:假设数mpq,且pq则mpp所以pm
由此可得出上面的结论,一个数如果存在约数,那肯定一个约数在其开方的左边,另一个约数在其开方的右边。代码详解publicclassBasics023{publicstaticvoidmain(String〔〕args){从101~200进行筛选for(inti101;i200;i){开方求解原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行intsqrtNum(int)Math。sqrt(i);for(intk2;ksqrtNum;k){if(ik0){i与k互相取余,如果余数为0则肯定不是素数,跳出循环break;}执行到这里,说明这个数在其开方的左边找不到约数if(ksqrtNum){System。out。println(i是素数);}}}}}
解法四:试除法升级版思路
其实前面几种都是试除法,那虚竹哥就简单介绍下试除法的概念:试除,顾名思义,就是不断地尝试能否整除。比如要判断自然数x是否素数,就不断尝试小于x且大于1的自然数,只要有一个能整除,则x是合数;否则,x是素数。
素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。开方求解原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行。质因数,是指能整除给定正整数的质数。指一个正整数的约数,并且该数还属于是质数的数字。判断素数,真的需要拿2间的所有整数去除吗?这样有些浪费,比如要判断101是否质数,101的根号取整后是10,需要尝试的数分别是:3,4,5,6,7,8,9,10的数。明显我们知道,除了2之外,所有的可能的质因数,都是奇数。那再优化下,就是需要尝试的数分别是:3,5,7,9的数。其中9肯定不行。那就是3,5,7重点来了,有没有发现什么,都是素数啊。结论:只要尝试试除小于的素数即可。代码实现步骤:从101~200进行筛选循环只要尝试小于x的素数即可其中获取x的素数抽象出一个方法出来其中要用到算法理论的:以空间换时间。代码详解publicclassBasics024{publicstaticvoidmain(String〔〕args){从101~200进行筛选循环只要尝试小于x的质数即可获取x的质数for(inti101;i200;i){x的值intsqrtNum(int)Math。sqrt(i);只要尝试小于x的质数即可x的质数的获取ListIntegerprimeListprimes(2,sqrtNum);booleanflagtrue;for(intj0;jprimeList。size();j){if(iprimeList。get(j)0){i与k互相取余,如果余数为0则肯定不是素数,跳出循环flagfalse;break;}}if(flag){System。out。println(i是素数);}}}privatestaticListIntegerprimes(intstartNum,intendNum){ListIntegerprimeListnewArrayList();primeList。add(2);primeList。add(3);for(intistartNum;iendNum;i){开方求解原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行intsqrtNum(int)Math。sqrt(i);for(intk2;ksqrtNum;k){if(ik0){i与k互相取余,如果余数为0则肯定不是素数,跳出循环break;}执行到这里,说明这个数在其开方的左边找不到约数if(ksqrtNum){primeList。add(i);}}}returnprimeList;}}
解法五:素数筛思路
素数的倍数不是素数。代码详解publicclassBasics025{publicstaticvoidmain(String〔〕args){定义vis数组true:表示不是素数false:表示是素数boolean〔〕visnewboolean〔201〕;默认初始值为false,即默认全为素数vis〔0〕vis〔1〕true;0,1不是素数for(inti2;i200;i){素数的倍数一定不是素数for(intjii;j200;ji){vis〔j〕true;}}for(inti0;i200;i){if(!vis〔i〕i101){System。out。println(i是素数);}}}}
我是虚竹哥,我们下一题见~
春暖花开闽西大地来相约穗龙合作一家亲,共叙江水山海情。悠悠珠江滔滔汀水,连接着广州与龙岩。文旅合作,共享资源,互送游客,两地携手开启新篇章。龙岩,亦称闽西,是全国唯一以龙字命名的地级市。红色,是这片土地
走进雪域江南,欣赏醉美西藏总要去趟西藏吧,看看心心念念的布达拉宫,吹吹羊湖的风,漫步在古老的八廓街感受一下缺氧但不缺信仰的地方。西藏确实有一种魔力吧,我刚从西藏旅行才回来不久,怎么说呢?其实很多人对西藏旅行
旅游市场迅速回暖广西侗乡特色百家宴成爆款中新社柳州2月12日电题旅游市场迅速回暖广西侗乡特色百家宴成爆款作者李娇阳从中国农历除夕开始,54岁的吴爱仙几乎每天都要在餐馆的厨房里从早忙到晚,一直持续到现在。资料图为广西柳州市
HeavenBurnsRed绯染天空下载教程,红烧天堂steam官网下载入库绯染天空HeavenBurnsRed是被国内玩家成为红烧天堂的二次元rpg游戏,在上线之初闯入日服畅销榜,受到玩家们的关注,但因没有中文劝退了大波玩家。好消息是绯染天空终于迎来官中
陕西菜卷孜卷的做法孜卷是陕西乡村农家特色面食,因其皮薄陷大味道好而得名。孜卷又叫菜卷滋卷,菜莽子等。这是一种似菜似饭亦菜亦饭的食品。在陕西方言里,滋纸子孜的读音基本相同,我觉得只有滋更能表达出这种卷
又到赏梅时,第28届南京国际梅花节明日开幕,36项特色活动等你来来源交汇点新闻客户端交汇点讯相思一夜红梅发,又到早春赏梅时。随着南京梅花山进入整体观赏期,2月13日,由南京市政府主办,南京市文旅局中山陵园管理局承办的梅开盛世,魅力南京第二十八届
西观音山游记耿峪西观音山在西安名气相对不高,但是爱好户外的朋友基本没有不知道的,这里也是去首阳山的必经之路,可是耿峪里的大小石门,瀑连沟嬉水,漂流等今年却是火了一把,很多去的朋友都是从观音山下
有风的地方除了大理,还有诚意满满的水墨嘉善有风的地方除了大理,还有诚意满满的水墨嘉善作为一名酷爱旅游的小驴友,最喜欢的就是逢年过节,到美丽而又充满诗意的地方走走。无论是被去有风的地方又一次带火的大理,还是上有天堂,下有苏杭
护国寺小吃之晨昏定省跟护国寺小吃的缘分,还得从单位取消午饭说起。削峰填谷,平均起来,餐补范围内解决工作餐基本没问题,且口味品质有得保证。然后,落到本篇文字上,还得说春节临近,疫情防控政策优化,外地游客
沂南沉浸式情景小剧入选基层公共文化服务高质量发展典型案例2月12日,推进公共文化服务高质量发展工作会议在湖北省武汉市召开。会议公布了由中央宣传部文化和旅游部国家发展改革委组织遴选的基层公共文化服务高质量发展典型案例,共51个。山东省两项
小米MIXFOLD3规格泄露或将采用潜望镜式长焦镜头gizchina报道,目前市场上折叠式手机的品牌并不多。三星拥有全球最多的折叠式设备以及市场份额。最初,华为和三星在折叠市场上势均力敌。然而,在美国对华为实施禁令后,该公司无法继续