java中求质数(素数)的问题
这篇笔记讲讲关于java中质数的问题。
一、什么是质数(素数)?
定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。它可以有无限个数。
二、java习题:输出1-100之内的所有质数
这题有几种解题思路:
第一种思路:
1、外层循环作为被除数,内层循环作为除数。
2、定义一个Boolean,标记外层循环数是否为质数。默认为 true。
3、内层循环结束,如果开关还为true。即被除数为质数,打印出来。
代码如下:
class Demo2{
public static void main(String args[]){
//1既不是质数也不是和数,使用i从2开始。
for(int i=2;i<=1000;i++){
boolean flag = true;
for(int j = 2;j < i;j++){
if(i % j==0){
flag = false;
break;//到了1000内的质数,就跳出循环,并输出结果。
}
}
if(flag){
System.out.print(" "+i);
}
}
}
}
运行效果:

第二种思路:
1、这个程序用了两层循环,外层循环列举从2到100之间的每一个整数(作为被除数),然后在内层循环中用从2到它之之间的数去除它,如果找到一个能够整除它的数,内层循环将跳出。如果一张没找到能够整除它的数,则当内层循环将2到它直接按的所有数都尝试过一遍之后,内循环也跳出。
2、等到内层循环跳出之后,程序接着判断j是否大于等于i,如果是上面的情况,表明这个数是质数,于是将这个数打印出来。
class Demo3{
public static void main(String args[]){
int i,j;
for(i = 2;i < 100;i++){
for(j = 2;j < i;j++){
if(i % j == 0)
break;
}
if(j>=i){
System.out.print(" "+i);
}
}
}
}
运行效果:

二、java习题:输出0-100的质数和
class Demo3{
public static void main(String args[]){
int sum = 0;
int j = 2;
// 找出1-100的质数之和
for (int i = 2; i <= 100; i++) { // i值为2,质数为除去1和自身整除的数 j初始值为2去除偶数
for (j = 2; j < i; j++) { //内层循环遍历查询i的整除数
if (i % j == 0) { //判断当前i是否可以整除k值
break; //整除则跳出循环
}
}
//如果当前内循环没有正常结束j与i对比不成立
if (j >= i) {
sum += i; // 累计质数和
System.out.println(i); //输出质数
}
}
System.out.println(sum); //输出质数之和
}
}
java中求质数(素数)的问题的更多相关文章
- java中求余%与取模floorMod的区别
初学java的时候接触的%这个符号 百分号? 求余? 取模? 我只知道不是百分号,好像是求余,听别人那叫求模运算符,跟求余一样,于是我便信了. 思考之后开始迷糊,然后经过多次考证得到以下结论. 首先, ...
- java中求几个字符串的最大公共子串 使用了比较器Comparator
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- java中求利息的代码
总结:函数的重要性,懂得用哪一种函数 package com.badu; import java.util.Scanner; //输入存款金额 money.存期 year 和年利率 rate, //根 ...
- java中求输入一个数,并计算其平方根~~~
总结:函数 Math.pow(x,0.5); package com.badu; import java.util.Scanner; // 输入一个数,并计算出平方根 public class AA ...
- java中求一下2008年5月31日, 往前倒30天是哪天?
题目9: 2008年5月31日, 往前倒30天是哪天? import java.util.*; public class Test { public static void main(Str ...
- [51nod1181]质数中的质数(素数筛法)
解题关键: 注意下标 #include<bits/stdc++.h> #define maxn 10000002 using namespace std; typedef long lon ...
- JAVA中使用递归和尾递归实现1000的阶乘的比较
在JAVA中求阶乘首先遇到的问题就是结果溢出,不管是使用int还是long,double都无法表示1000!这么大的天文数字,这里暂且用BigInteger解决这个问题! 下面是使用递归和尾递归分别计 ...
- HDU 2136 素数打表+求质数因子
Largest prime factor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- java 数组中求最值
java中数组求最值,这在实际的开发中差点儿用不到,可是在面试中会偶尔被问到,这是考你主要的思维能力,如今说下这个题的基本思路 思路: 1:先定义一个变量,通常是用数组的第一个值 2:在循环中推断(从 ...
随机推荐
- jdk源码阅读笔记-LinkedHashMap
Map是Java collection framework 中重要的组成部分,特别是HashMap是在我们在日常的开发的过程中使用的最多的一个集合.但是遗憾的是,存放在HashMap中元素都是无序的, ...
- Detours HOOK 库 过滤LoadLibraryExW
Detours HOOK 库 Hook 过滤LoadLibraryExW 一丶简介 1.1 Detours库简介 Detours是微软提供的HOOK库.为我们Hook提供了方便.再也不用手撸 HOOK ...
- Django设置查看原生SQL语句
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBU ...
- 怎么动态生成js变量
动态生成全局变量: //简单的用字符串作为变量名 window['hello'] = "hello, world"; alert(hello); //批量定义 for(var ...
- 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第6章 STM32H7工程模板建立(IAR8) 本章 ...
- Android进程间通信(一):AIDL使用详解
一.概述 AIDL是Android Interface Definition Language的缩写,即Android接口定义语言.它是Android的进程间通信比较常用的一种方式. Android中 ...
- Observer观察者模式与OCP开放-封闭原则
目录 场景引入 在联网坦克项目中使用观察者模式 总结 在学习Observer观察者模式时发现它符合敏捷开发中的OCP开放-封闭原则, 本文通过一个场景从差的设计开始, 逐步向Observer模式迈进, ...
- 解决Dynamics 365使用JS调用Web API时报no property value was found in the payload 错误。
摘要: 微软动态CRM专家罗勇 ,回复323或者20190421可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 碰到如下报错: message: "An er ...
- docker的简单使用
1.下载centos镜像 docker pull centos 2.查看本地所有镜像 docker images 3.后台运行docker docker run -t -i -d centos /bi ...
- 【English Teradata】Strategizing Vantage Technology
strategy部署;谋略;战略[ˈstrætədʒi] strategize制定战略 Strategizing战略化 Technology科技;工艺;工程技术 [tekˈnɑːlədʒi] St ...