范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

JAVA筑基100例第2题判断101200之间有多少个素数

  作者简介:大家好,我是小虚竹。Java领域优质创作者,CSDN博客专家,华为云享专家,掘金年度人气作者,阿里云专家博主,51CTO专家博主
  技术活,该赏
  点赞 收藏  再看,养成习惯
  零、前言
  今天是学习  「JAVA语言」  打卡的第2天,我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 「JAVA语言」  已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。 一、题目描述
  题目:判断 101-200 之间有多少个素数,并输出所有素数。  二、解题思路:循环法
  素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。
  判断素数的方法:从2到n-1判断有没有能整除n的数。如果有,则不是素数,否则,是素数  三、代码详解public class Basics02 {      public static void main(String[] args) {          int i, j;         // 从101 200进行筛选         for (i = 101; i <= 200; i++)         {             // 从2 i-1的值             for (j = 2; j <= i - 1; j++) {                 if (i % j == 0){                     // i与j互相取余,如果余数为0则肯定不是素数,跳出循环                     break;                 }             }             if (i == j) {                 // 如果i等于j则说明完成了从2 i-1的循环,说明每一次取余的值都不是0。结果肯定是素数                 System.out.println(i + "是素数");             }         }     } }
  解法二:循环对半法思路
  素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。 从2到n-1判断有没有能整除n的数。每拿到一个数,判断该数是否是素数;
  从2开始,遍历到该数的一半的数据,看是否有数据可以整除它,有就不是素数,没有就是素数。
  注:为什么是该数的一半,因为素数的特性,那肯定不能被2整除了,被2后面的数整除得到的数据肯定小于该数的一半。
  这种写法会少循环一半的数据。提高效率。  代码详解public class Basics02_2 {      public static void main(String[] args) {          int i, j;         // 从101 200进行筛选         for (i = 101; i <= 200; i++)         {             //标记位 //当前的数是素数             boolean flag = true;             // 从2 i-1的值             for (j = 2; j <= i /2; j++) {                 if (i % j == 0){                     // i与j互相取余,如果余数为0则肯定不是素数,跳出循环                     flag = false;                     break;                 }             }             if (flag) {                 // 根据标记位flag的结果。true结果肯定是素数                 System.out.println(i + "是素数");             }         }     } }
  解法三:开方法思路
  素数,又称质数,定义是:除了1和它本身以外不再有其他的除数整除。 开方求解 原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行。 证明: 假设数m=p*q,且p q 则m p*p 所以 p<=  m
  由此可得出上面的结论,一个数如果存在约数,那肯定一个约数在其开方的左边,另一个约数在其开方的右边。  代码详解public class Basics02_3 {      public static void main(String[] args) {          // 从101 200进行筛选         for (int i = 101; i <= 200; i++) {             //开方求解 原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行             int sqrtNum = (int)Math.sqrt(i);             for (int k = 2; k <= sqrtNum; k++) {                 if (i % k == 0){                     // i与k互相取余,如果余数为0则肯定不是素数,跳出循环                     break;                 }                 //执行到这里,说明这个数在其开方的左边找不到约数                 if(k>= sqrtNum){                     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 的素数抽象出一个方法出来其中要用到算法理论的: 「以空间换时间。」  代码详解public class Basics02_4 {        public static void main(String[] args) {          //从101 200进行筛选 循环             //只要尝试小于 x 的质数即可                 //获取 x 的质数         for (int i = 101; i <= 200; i++) {             // x的值             int sqrtNum = (int)Math.sqrt(i);             //只要尝试小于 x 的质数即可                 // x 的质数的获取             List primeList = primes(2,sqrtNum);             boolean flag = true;             for (int j = 0; j < primeList.size(); j++) {                 if (i % primeList.get(j) == 0){                     // i与k互相取余,如果余数为0则肯定不是素数,跳出循环                     flag = false;                     break;                 }              }             if(flag){                 System.out.println(i + "是素数");             }         }     }      private static List primes(int startNum,int endNum){         List primeList = new ArrayList<>();         primeList.add(2);         primeList.add(3);         for (int i = startNum; i <= endNum; i++) {             //开方求解 原理:一个数的约数在其开方的左边,那肯定会存在一个约数在其开方的右边,所以只要循环到开方数就行             int sqrtNum = (int)Math.sqrt(i);             for (int k = 2; k <= sqrtNum; k++) {                 if (i % k == 0){                     // i与k互相取余,如果余数为0则肯定不是素数,跳出循环                     break;                 }                 //执行到这里,说明这个数在其开方的左边找不到约数                 if(k>= sqrtNum){                     primeList.add(i);                 }             }         }         return primeList;     } }
  解法五:素数筛思路
  素数的倍数不是素数.  代码详解public class Basics02_5 {        public static void main(String[] args) {              //定义vis数组  true: 表示不是素数  false:表示是素数             boolean[] vis = new boolean[201];//默认初始值为false,即默认全为素数             vis[0] = vis[1] = true; //0,1 不是素数             for (int i = 2; i <= 200; i++) {                 //素数的倍数一定不是素数                 for (int j = i*i; j <= 200; j += i) {                     vis[j] = true;                 }             }             for (int i = 0; i <= 200; i++) {                 if(!vis[i] && i>101){                     System.out.println(i + "是素数");                 }              }         } }
  我是虚竹哥,我们下一题见

一场星空童话即将上演,别错过!今年3月24日傍晚,一场美妙的星空童话金星合月,将在天空中上演。地心所见(指在地心位置观测时的月球位置)金星在月球以北0。11度的区域,在中国印度非洲等地可见月掩金星。3月24日是黑洞是通向宇宙其他地方的后门?关于黑洞五大理论真烧脑黑洞是宇宙中最吸引人引起争论最激烈的物体之一。几十年来,它们吸引了公众的想象力,部分原因是已故的英国物理学家斯蒂芬霍金,他将它们从一个难以理解的科学理论转变为神秘的奇迹之源。关于黑法新社大量发射卫星造成严重光污染天文学家没法正常工作了中国小康网03月21日讯老马周一,天文学家警告说,绕地球运行的卫星数量激增造成的光污染对全球自然构成了前所未有的威胁。卫星划过夜空法新社报道,自2019年以来,低地球轨道上的卫星数TCL发布两款电视新品中证网讯(记者万宇)3月21日,TCL召开了名为未至之境的电视新品发布会,推出了QDMiniLED电视新品TCLX11G以及最新款MiniLED电视TCLQ10GPro。据介绍,T戴森做耳机,我笑了1hr我很喜欢耳机,也买过很多很多耳机。甚至B站抽奖都抽了得有百台各种耳机。某种意义上,这东西已经是我的生活必需品了。有时候工作到很晚,心情特别特别烦躁,但只要一戴上耳机闭上眼睛,iPhone14ProMax和iPhone14Pro全球销量分列第一第二,苹果还能狂飙高端手机市场多久?快消八谈智能手机手机苹果iPhone3月21日,据CounterpointResearch公布数据显示,2022年,全球智能手机销量同比下降12,但是全球高端手机市场的销量增加了1华为预览手表佩戴效果专利公布天眼查App显示,3月17日,华为技术有限公司申请的一种预览方法电子设备及系统专利公布。摘要显示,第一设备可以开启拍摄预览功能,采集并识别第二设备的轮廓(或屏幕的轮廓)或佩戴第二设这到底是不是华为?经常看到消费者发出疑问,我在某平台或者线下门店购买手机,周围人告知或者网上查后发现不是华为品牌,没有华为logo,突然觉得上当受骗了,其实并不是!那么今天一文给大家讲清楚某平台及线假期长时间看手机,快来解锁正确的姿势春节假期,很多人手机不离手。殊不知,长期错误的手机使用姿势,您很可能被手机脖盯上。快来解锁看手机的正确姿势吧!1。躺着看手机时,最好借助抱枕等,保持关节稳定。2。尽量坐着看手机。如探讨给老人选择手机是功能手机还是智能手机?随着科技的不断发展,手机的功能也越来越多样化。对于老年人来说,选择一款合适的手机非常重要,因为它不仅能够满足他们日常的通信需求,还能提高他们的生活质量。但在选择手机的时候,老年人常2023年电视盒子怎么选?超全选购指南!附品牌推荐排行榜虽然智能电视已然普及,但大家对电视盒子的依赖也并没有减少,因为电视用久了或多或少的会遇到一些问题,有些用户会通过使用电视盒子来缓解这些问题。对于到底是否有必要买电视盒子?电视盒子能
2022年诺贝尔物理学奖量子纠缠(通俗阐释)今年物理诺奖是量子纠缠,引起了非常大的震动!诺奖颁给了量子纠缠,则说明用科学实验证明了爱因斯坦曾经非常笃定的观点错了,而他坚决反对的量子纠缠是真实存在的。爱因斯坦也曾经坚信上帝是不川西欢乐自驾游(17)神奇泸沽湖第二天一早,我们就来到湖边,不仅仅为赏景,我们要乘船去湖心岛谢瓦俄岛(又叫洛克岛蛇岛)。清晨的泸沽湖,依然显得十分安静,空气有些潮湿,湖面飘来的微风略带凉意,出湖必须加件外衣。岸边兄弟姐妹之间最好的关系,不是走得近,而是这三句话兄弟姐妹之间,真的是越近越好吗?当然,如若关系特别好的兄弟姐妹,势均力敌的兄弟姐妹,丝毫没有攀比之心的兄弟姐妹,常来常往无疑是幸福的。怕就怕,兄弟姐妹之间,感情没有这么浓厚。一方富退休之后最聪明的活法主动和4种人断交,不管是谁图源自网络侵权请联系删除退休是人生的一条分割线,前半生为了生计忙忙碌碌,为了赚更多的钱,不得不去结交很多人,也要与许多自己并不喜欢的人维持着关系。这导致即使我们认识了很多人,却没有光遇11月活动预告,彩虹节重磅来袭,两次复刻预测光遇11月活动预告,彩虹节重磅来袭,两次复刻预测前言大家好,我是喜欢玩游戏聊游戏的孟婆小叔。时间总是不等人,尤其是对于蜡烛少的玩家来说,10月已经快结束了,在月底还有万圣节,需要支聊天群具现化,横版冒险游戏互联网原住民,游戏里的键盘侠有这样一款游戏,将社交聊天群具现化,群主和管理员变成BOSS铺天盖地的聊天内容,编织成十分独特的剧情故事。今天玩蛋向大家分享的,是一款非常有趣的横版冒险游戏互联网原住民。游戏英文名QQ飞车手游必学的三个技巧QQ飞车手游虽然比较休闲,但是想要体验到这种赛车游戏的乐趣,最基础的游戏技巧是需要掌握的,需要我们大量的练习。QQ飞车游戏内的模式非常多,例如道具,竞速,超能等等,当然,最受玩家们JDG晋级四强,tes再次被鞭尸,钉子上单就这2022电竞季JDG对阵RGE的2022年世界总决赛第一场四分之一决赛,来得快,走得也快。凌晨5点开打,一觉醒来一看比分,稳稳地30结束,都没给我观赛的机会。这个比分在大多数人的预资格附加赛预告与前瞻西部赛区季后赛资格附加赛开战守望先锋联赛2022赛季西部赛区联赛积分排名710位的战队,将在本周末围绕着最后两个季后赛晋级名额展开争夺战。10月22日凌晨首场比赛崛起队迎战狂欢队。崛起队本赛季的总体进程可以用作为一个男人,我居然在月子会所连续住了34天临近出所,月嫂在指导宝妈学习给宝宝洗澡带娃真是一项复杂而有趣的工作。写下这几个字的时候,娃已睡下。我长舒一口气,我太想感叹一下了,真的,感叹使我快乐。除了出月子会所的前一夜回家收拾有色日报钨钼稀土钴锂镍价格行情202209212022年10月21日钨市场行情本周国内钨价持续处在阴跌整理区间,消费市场未有明显起色,大型钨企下半月长单报价持续弱调,进一步打击参与者信心,十月钨市整体心态显示悲观,行情筑底压力