JAVA从键盘输入一个整数判断是否为素数代码

合集下载

JAVA编程实例大全及详解答案(50例)

JAVA编程实例大全及详解答案(50例)

JA V A编程实例大全及详解答案(50例)【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对数: 1");System.out.println("第2个月的兔子对数: 1");int f1 = 1, f2 = 1, f, M=24;for(int i=3; i<=M; i++) {f = f2;f2 = f1 + f2;f1 = f;System.out.println("第" + i +"个月的兔子对数: "+f2);}}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

public class lianxi02 {public static void main(String[] args) {int count = 0;for(int i=101; i<200; i+=2) {boolean b = false;for(int j=2; j<=Math.sqrt(i); j++){if(i % j == 0) { b = false; break; }else { b = true; }}if(b == true) {count ++;System.out.println(i );}}System.out.println( "素数个数是: " + count);}}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

素数java代码

素数java代码

素数java代码素数是指只能被1和自己整除的正整数,像2、3、5、7、11等都是素数。

在计算机编程中,判断一个数是否为素数是一项基本的算法。

本文将从Java语言的角度入手,介绍如何编写素数判断的代码,包括两种方法:暴力枚举法和筛法。

一、暴力枚举法暴力枚举法是一种较为简单粗暴的方法,通过一个循环枚举所有可能的因子,判断是否能被整除。

其Java代码如下:public static boolean isPrime(int n) { if (n < 2) { //小于2的数均不是素数 return false; } for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { //能被整除,即不是素数 return false; } } return true; //不被整除,即是素数 }首先判断输入的数n是否小于2,如果n小于2,则直接返回false,因为小于2的数均不是素数。

然后从2开始循环到n的平方根,检查是否能被整除,如果能则返回false,否则继续循环,最后返回true表示是素数。

这种方法的时间复杂度为O(√n),因为最多需要枚举n的平方根次数。

在较小的n值的情况下,这种方法较为有效,但当n较大时,效率低下。

二、筛法筛法是用于快速筛选素数的一种高效算法,它的原理是从小到大依次枚举素数,将其倍数标记为合数。

例如,当枚举到2时,将4、6、8、10等标记为合数;当枚举到3时,将6、9、12等标记为合数。

由于合数被标记多次,所以这种方法比暴力枚举法更快。

筛法主要有两种:埃氏筛法和欧拉筛法。

下面分别介绍它们的Java代码实现。

2.1 埃氏筛法埃氏筛法是一种简单直接的筛法,其Java代码如下:public static int[] getPrimes(int n) { if (n < 2) { //小于2的数没有素数 return new int[0]; } boolean[] isPrime = new boolean[n + 1]; //初始化所有数为素数 for (int i = 2; i <= n; i++) { isPrime[i] = true; } for (int i = 2; i <= Math.sqrt(n); i++) { if (isPrime[i]) { //当前数为素数 for (int j = i * i; j <= n; j += i) { //枚举它的倍数isPrime[j] = false; //标记为合数 } } } List<Integer> list = new ArrayList<>(); for (int i = 2; i <= n; i++) { if (isPrime[i]) { //将素数添加到列表中 list.add(i); } } int[] primes = new int[list.size()]; //将列表转成数组 for (int i = 0; i < primes.length; i++){ primes[i] = list.get(i); } return primes; }首先判断输入的n是否小于2,如果n小于2,则返回一个长度为0的素数数组。

java技能考核试题

java技能考核试题

【试题1】任务一:输入某年某月某日,判断这一天是这一年的第几天。

例如,2001年3月5日是这一年的第64天。

要求:使用分支结构语句实现。

任务二:输出阶梯形式的9*9口诀表,如图1.1所示。

图1.1阶梯形式的9*9口诀表要求:使用循环结构语句实现。

任务三:编程实现判断一个整数是否为“水仙花数”。

所谓“水仙花数”是指一个三位的整数,其各位数字立方和等于该数本身。

例如:153是一个“水仙花数”,因为153=13+53+33。

要求:用带有一个输入参数的方法或函数实现,返回值类型为布尔类型。

【试题2】任务一:已知某字符串数组,包含如下初始数据:a1,a2,a3,a4,a5 已知另一字符串数组,包含如下初始数据:b1,b2,b3,b4,b5,做程序将该两个数组的每一对应项数据相加存入另外一个数组,并输出。

输出结果为:a1b1,a2b2,a3b3,a4b4,a5b5。

要求:●定义2个数组,用于存储初始数据。

定义另外一个数组,用于输出结果。

●做循环将两个初始数组的对应项值相加,结果存入另外一个数组。

(不要边加边输出)●做循环将结果数组中的值按顺序输出。

任务二:写出一个函数:将某已知数组的奇数项组合成一个新的数组。

在主函数中调用该函数,并循环输出新数组的内容。

要求:●主函数定义一个初始化的数组,该数组中的值为:1,2,3,4,5,6,7,8,9,10,11●写出一个函数,该函数的函数名为:OddArray,函数需要的参数个数1个,参数数据类型为数组。

函数的返回值为数组。

函数体实现功能:将参数数组中的奇数项存入另外一个数组,并返回该数组到主函数中。

●在主函数定义一个新的数组,用于取得函数OddArray的返回值,然后循环显示数组的值。

(显示出来1,3,5,7,9,11)任务三:现有学生类,有2个属性:学号,姓名。

有大学生类继承此学生类,新增一个属性:专业。

写出学生类,以及大学生类。

实例化大学类为一个对象并给大学生类的所有属性赋值。

java输出1~100之间的全部素数的5种方式总结

java输出1~100之间的全部素数的5种方式总结

java输出1~100之间的全部素数的5种⽅式总结⽬录需求:输出1~100的所有素数分析java输出素数找出素数规范输出需求:输出1~100的所有素数分析1.素数:判断条件1:只能被1和本⾝整除的称为素数;判断条件2:在区间(1,x/2)中找不到能整除素数x的整数;判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数;2.⽅法:很多,但不外是循环嵌套外加条件语句;class PrintSuShu {public static void main(String[] args) {//⽅法⼀:根据素数的定义来遍历检查//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值,初值为trueboolean flag = true;//内层遍历除数jfor (int j = 2; j < i; j++) {//判断是否存在j能整除i,若存在,则更改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//⽅法⼆:根据判断条件2进⾏遍历检查,减少遍历次数//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于i/2=2⽽直接跳出内循环)for (int j = 2; j <= (i / 2); j++) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//⽅法三:根据判断条件3进⾏遍历检查,减少遍历次数//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于sqrt(i)=2⽽直接跳出内循环)//再思考⼀下若i=25时呢?若不取边界还有那些不是素数的数会输出呢?for (int j = 2; j <= Math.sqrt(i); j++) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");/*⽅法四:在⽅法三的前提上优化,优化基础是除2外的所有偶数均不是素数,*(i+=2)只遍历奇数,减少外层遍历次数;同理,由于奇数是不能被偶数整除的,*(j+=2)只遍历奇数,减少内层遍历次数*/System.out.print("2 ");//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 3; i <= 100; i += 2) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于sqrt(i)=2⽽直接跳出内循环)//再思考⼀下若i=25时呢?若不取边界还有那些不是素数的数会输出呢?for (int j = 3; j <= Math.sqrt(i); j += 2) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//联想⼀下,能被2整除(偶数)的直接剔除,同样的道理,能被3or5整除的剔除掉会不会让外层循环的次数更少呢?//此处才到100,若是1000呢?10000呢?//定义⼀个数组,由于剔除了偶数,故数组长度不会超过总个数的⼀半int[] arr = new int[500];int count = 0;for (int i = 6; i <= 1000; i++) {boolean flag = true;if (0 == i % 2 || 0 == i % 3 || 0 == i % 5) {flag = false;}if (flag) {arr[count] = i;count++;}}System.out.println("6~1000中剔除能被2or3or5整除的数后还剩" + count + "个");System.out.println("1~1000中所有素数为:");System.out.print("2" + "\t");System.out.print("3" + "\t");System.out.print("5" + "\t");count = 0;for (int i = 0; i < 500; i++) {boolean flag = true;if (0 == arr[i]) {break;}for (int j = 7; j <= Math.sqrt(arr[i]); j += 2) {if (0 == (arr[i]) % j) {flag = false;break;}}if (flag) {System.out.print((arr[i]) + "\t");count++;}}System.out.println("\n" + "---------------------");System.out.println("\n" + "其中6~1000中剔除能被2or3or5整除的数中还是素数的有" + count + "个");}}java输出素数java输出1,000,000之内的所有素数找出素数for(n=3;n<=1000000;) {for(i=2;i<n;i++) {if(n%i= =0) break;if(i= =n-1) {su[count]=n;count++;}}n+=2;}加⼆是因为从3开始奇数有可能是素数,第⼀个循环遍历1000000个数,第⼆个循环看它是不是素数。

课堂作业(模块1:Java编程逻辑).doc

课堂作业(模块1:Java编程逻辑).doc

课堂作业模块1 Java编程逻辑【第1课】【作业1】编写一个Java程序,在控制台上输出如下两行信息:Hello,World!Hello,Java!考核点1:了解一个Java程序的启动位置(即程序入口)。

考核点2:掌握基本输出语句:System.out.println(字符串)【第2课】【作业1】从键盘输入3个整数a、b、c,计算a+b*c的结果后输出,验证计算结果是否遵循运算符的优先级顺序。

考核点1:使用Scanner类获取键盘输入。

考核点2:基本运算符及其优先级顺序。

【作业2】从键盘输入1个实数r,计算以r为半径的圆的面积并输出结果,要求将π定义为符号常量。

考核点:符号常量的基本用法。

【第3课】【作业1】从键盘输入3个整数,比较大小后输出最大者。

考核点:if-else语句的运用。

【作业2】从键盘输入一个3位数,判断其是否为水仙花数。

所谓“水仙花数”是指一个三位整数,其各位数字立方和等于该数本身。

例如:153=13+53+33,所以153是一个水仙花数。

考核点:基本数学运算符和逻辑运算符的用法。

【第4课】【作业1】从键盘输入3个整数,比较大小后按由小到大的顺序输出。

考核点:if-else语句嵌套运用。

【作业2】从键盘输入一个年份和一个月份,输出此月份有多少天(考虑闰二月的情况)。

考核点:使用switch-case多分支语句。

【第5课】【作业1】从键盘输入一个正整数,判断其是否为素数。

素数指只有1和它本身两个因子的整数。

考核点:基本循环语句的用法。

【作业2】输出100-999之间的全部水仙花数。

考核点:基本循环语句的用法。

【作业3】从键盘输入一个正整数,判断并输出该正整数是几位数。

考核点1:基本循环语句的用法。

考核点2:分离一个整数各个位数字的方法。

【第6课】【作业1】编写一个Java程序,输出如下图案,图案的行数由键盘输入。

(1)观察图案中行、列及星星个数之间的关系。

(2)扩展练习,输出如下图案,图案的行数由键盘输入。

(完整版)java程序填空题

(完整版)java程序填空题

(完整版)java程序填空题一、程序填空题(每空3分,共30分)1.以下程序要求从键盘输入一个整数,判别该整数为几位数,并输出结果,请将下面的程序填写完整。

public class Blank1 {public static void main(String[] args) throws IOException { Scanner sc=new Scanner( (1) );int count=0,t;int x=sc.nextInt();sc.close();t=x;while(t!=0){count++;(2) ;}System.out.println(x+"是"+count+"位数。

");}}答案:(1)System.in(2)t=t/102.在下面的程序中使用方法重载分别实现了两个和三个整数的相加,请将下面的程序填写完整。

class AddOver{public (3){return a+b;}public int add( int a, int b, int c ){return a+b+c ;}}public class Blank2{public static void main(String[] args){AddOver a= (4) ;System.out.println(a.add(1,2));System.out.println(a.add(1,2,3));}}答案:(3)int add(int a,int b)(4)new AddOver()3. 构造一个类来描述一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,利用另一个点对当前点的坐标进行赋值,请将下面的程序填写完整。

class Point{int x,y;public(5) (int x, int y){this.x=x; this.y=y;}public Point getPoint(){Point temp = new Point(0,0);temp.x=x; temp.y=y;return (6);}public void setPoint( (7) ){this.x=s.x; this.y=s.y;}}public class Blank3 {public static void main(String[] args){Point a = new Point(3,4);Point b = new Point(0,0);b=a.getPoint();Point c = new Point(0,0);c.setPoint(b);}}答案:(5)Point(6)temp(7)Point s4. 下面的程序完成从D:\Hello.txt中读取文本并显示在屏幕上,请将下面的程序填写完整。

20个java案例

20个java案例

20个java案例以下是20个Java案例,涵盖了不同的主题和功能。

每个案例都有一个简要的描述和示例代码。

1. 计算两个数的和。

描述,编写一个程序,计算两个整数的和并输出结果。

示例代码:java.int num1 = 10;int num2 = 5;int sum = num1 + num2;System.out.println("两个数的和为," + sum);2. 判断一个数是否为偶数。

描述,编写一个程序,判断一个整数是否为偶数,并输出结果。

示例代码:java.int num = 6;if (num % 2 == 0) {。

System.out.println(num + "是偶数。

");} else {。

System.out.println(num + "不是偶数。

");}。

3. 求一个数的阶乘。

描述,编写一个程序,计算一个正整数的阶乘,并输出结果。

示例代码:java.int num = 5;int factorial = 1;for (int i = 1; i <= num; i++) {。

factorial = i;}。

System.out.println(num + "的阶乘为," + factorial);4. 判断一个字符串是否为回文字符串。

描述,编写一个程序,判断一个字符串是否为回文字符串,并输出结果。

示例代码:java.String str = "level";boolean isPalindrome = true;for (int i = 0; i < str.length() / 2; i++) {。

if (str.charAt(i) != str.charAt(str.length() 1 i)) {。

isPalindrome = false;break;}。

JAVA程序设计实验

JAVA程序设计实验

JAVA程序设计实验实验1 JAVA基础一、实验目的1.掌握JA V A语言的各种数据类型2.熟悉运算符和表达式。

3.学会编写简单程序二、实验环境硬件:计算机软件:操作系统:windows98以上或LINUX、JDK 1.2以上三、实验内容:下面是一个简单的JA V A程序,将多种类型变量通过各种运算符组成不同的表达式,并将运算结果赋值给同类型的变量,使用println()方法输出各变量的值。

Public class ExampleTest(){Public static void main(String args[]){Int no=(11+20)*3/5; //A行System.out.println(“no=”+no);no++; //B行System.out.println(“no=”+no);Boolean bool=false; //C行bool=true&!bool; //D行System.out.println(“bool=”+bool);Byte bV alue=0x10; //E行System.out.println(“bV alue=”+bV alue);Bool=(no>bV alue); //F行System.out.println(“bool=”+bool);}}四、实验的主要步骤1.用edit录入以上程序内容并保存,注意文件名。

2.用javac.exe命令编译刚保存的JA V A文件。

3.如果编译通不过,用edit打开源代码进行修改。

重复第2步和第3步至到编译通过。

4.用java.exe运行编译生成的类文件。

5.查看运行结果。

实验2 JAVA流程控制一、实验目的1.掌握条件语句的使用。

2.熟悉循环语句的使用。

二、实验环境硬件:计算机软件:操作系统:windows98以上或LINUX、JDK 1.2以上。

三、实验内容1.求a+aa+aaa+…+a..a (n个)的和,其中a为1-9之间的整数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档