当前位置: 首页 > news >正文

威海网站制作团队泰兴中信建设有限责任公司

威海网站制作团队,泰兴中信建设有限责任公司,wordpress安装详细,济南哪里做网站好1.0 Q: 输出 100 以内所有质数 1.1 /* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数 */boolean isPrime true;for (int i 2; i < 100…

1.0 Q: 输出 100 以内所有质数

1.1

/* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数
*/boolean isPrime = true;for (int i = 2; i <= 100; i++) {for (int j = 2; j < i; j++) {if ( i % j == 0 )isPrime = false;}if(isPrime == true)System.out.println();

存在的问题

  • 第二层循环中 j < i 次数太多了
    例如,检查 20 是不是质数。用 20 除 1/2/3/…,但是,除到 10 就可以停止了,因为用 20 除 11/12是没有意义的,是一定不能整除的,不影响质数判断。
  • 在每次外层循环开始时,将 isPrime 重置为 true,确保对每个数字i的新检查都是从假设它是质数开始的。在错误的版本中,由于没有刷新这个状态,导致从第一个不是质数的数开始,就一直是 false 到结束了。
  • 添加 break 语句,在发现非质数时立即退出内层循环,避免不必要的迭代。

1.2

boolean isPrime = true; for (int i = 2; i <= 100; i++) {isPrime = true; // 每次检查新数时,需要重置isPrime为true//除到自己的一半大的数就可以停止,继续是没有意义的.for (int j = 2; j < i/2; j++) {if (i % j == 0) { isPrime = false; break; // 一旦确定不是质数,就跳出循环,提高效率}}if (isPrime) { System.out.println(i); }
}

2. 找 100 以内两两相邻的、且差值于2的质数对

例如 (3,5)(5,7)(11,13)

  • 思路 1 :先找出所有质数,顺序装入数组。用 for 循环遍历,只要 prime[i]+ 2 == primes[i+1],就输出这两个数
  • 思路 2:每次找出一个质数 i,就直接判断 i + 2 是不是质数,如果也是,那就输出这两个数

这里实现思路 2.

  • 相对与第一题,这里还有一个改进。那就是提前用 num = i 接住最外层的循环值(检查到哪个数了)
    for (int i = 2; i <= 100; i++) {boolean isPrime = true;for (int j = 2; j < i / 2; j++) {if (i % j == 0) {isPrime = false;}}if (isPrime) {i += 2;boolean isPrime2 = true;for (int k = 2; k <= i / 2; k++) {if (i % k == 0) {isPrime2 = false;}}if (isPrime2)System.out.println(i + "," + (i - 2));}}

在这里插入图片描述
对于输出结果来说,显然不对,(3,5)被忽略了。

分析:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到,第一轮检查 2 时,是正常的。即检查 2 是质数后,将 i + 2,检查 4 不是质数, 所以不输出。接下来应当检查 3 。
但是,由于 i + 2 这个操作仍是在最外层循环内做的,因此这个操作会将这个改变带到下一次的大循环,直接来说就是下一次不检查 3 了,变成检查 5 了

    for (int i = 2; i <= 100; i++) {//要使用且改变外层循环的层数,预先定义一个变量来接收,这样就不会影响到外层循环int num = i;boolean isPrime = true;for (int j = 2; j < num / 2; j++) {if (num % j == 0) {isPrime = false;}}if (isPrime) {num += 2;boolean isPrime2 = true;for (int k = 2; k <= num / 2; k++) {if (num % k == 0) {isPrime2 = false;}}if (isPrime2)System.out.println(num + "," + (num - 2));}}

在这里插入图片描述

http://www.yayakq.cn/news/907119/

相关文章:

  • 网站建设需要些什么资料开发个网站需要多少钱
  • 建设网站的新闻线上咨询预约网站建设方案
  • 网站如何推广引流重庆网上房地产信息网官网
  • 专业建站报价湖南长沙装修公司
  • 遵义市网站制作wordpress全站背景
  • 产品做网站推广深圳网站-建设信科网络
  • 宁波快速建站公司做网站还赚钱么
  • 网站开发公司小程序开发响应式购物网站设计
  • 专业的论坛网站建设开发一元购网站怎么做
  • 建设网站的条件域名解析网站打不开
  • 佛山建站公司模板上海软件定制开发
  • php在线购物网站建设sticky wordpress html
  • 国企单位网站建设方案中职网站建设教学计划
  • 深圳网站关键词优化网站中了木马了怎么办
  • 泰州建设局网站备案 修改网站名称
  • 网站开发框架参考文献一级做爰片免费网站
  • 做网站的关键技术企业网组建
  • 郑州建设教育培训中心网站初一下电脑课书做网站
  • 营销网站设计实验居然之家装修公司官网
  • asp.net网站开发第一步微信android平板版
  • 网站头部导航代码服饰网站模板
  • 重庆网站建设吧网站的建设求职简历
  • 建站公司咨询网站后台用esayui做
  • 免费发布卖车信息网站网站备案幕布照规范
  • 福田网站建设设计公司哪家好网站跳出率 查询
  • 网站建设企业站模板上海知名家装公司有哪些
  • 广西玉林网站建设正规公司织梦网站模板还原的文件在哪里
  • 酒店网站模板杭州市钱江新城投资集团有限公司征集网站建设合作单位的公告
  • iis6建设网站建设网站的要求
  • 新上线网站如何做搜索引擎王者荣耀官方网站