Java算法求水仙花数
题目打印出所有的“水仙花数”,所谓“水仙花数”是指2
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
❖ 题目:输入两个正整数m和n,求其最大公约数和最小 公倍数。
❖ 程序分析:利用辗除法
❖ GCD(A, B)=GCD(B, A%B)
❖ 当A%B==0时,B即为最大公约数
❖ GCD〔12,18〕=GCD〔18,12〕
#include “stdio.h〞
main()
{int max, next, n;
scanf(“%d〞,&next);
max=next;
/* 第一个数就是最大数 */
for (n=2;n<=10; n++) /* 输入另外的九个数,并依次 {scanf(“%d〞,&next); 比较出最大数 */
if (next>max) max=next; }
printf(“max=%d\n〞, max); /* 打印出最大数 */ }
问题:求出以“9999〞作为结束标志的一组整数的最大数。 例如输入:123 45 5678 34 9999 67 23456,输出结果为 5678,即对9999及其以后的数不作处理。
if (n%i==0) { flag=0; break; } if (flag==1) printf(“该数是素数〞〕;
else printf(“该数不是素数〞); }
❖ 猴子吃桃问题:猴子第一天摘下假设干个桃子,当即 吃了一半,还不瘾,又多吃了一个第二天早上又将剩 下的桃子吃掉一半,又多吃了一个。以后每天早上都 吃了前一天剩下的一半零一个。到第10天早上想再吃 时,见只剩下一个桃子了。求第一天共摘了多少。
java习题
31、编写程序,利用循环控制语句输出如下数字金字塔图形。
老师3:发送第78份试卷
老师2:发送第77份试卷
老师3:发送第76份试卷
... ...
老师2:发送第1份试卷
/link?url=KMFDbF3z7BnHjFarK85i_30HstIyI98rVWRupXOPDP6DhXV-7HD5e8HOhqD3BMRS9lvU31L-lStKQdcgDMExmbp0lecBEgEmcfC1JIngqX_
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
32、编写程序,利用线程模拟一段时间内(3分钟)交通信号灯的运行状况,红灯亮10秒,绿灯亮30秒,黄灯亮3秒。
18、已知,s=1-1/2+1/3-1/4+…+1/(n-1)-1/n,编写程序,求n=100时,s的值。
19、利用面向对象知识,用Java语言编写圆类(Circle)和矩形类(Retangle)继承自形状类(Shape),计算周长和面积,并编写测试类测试完成测试。
20、输入某年某月某日,判断这一天是这一年的第几天。计算方法为:h =(q+[26(m+1)/10]+k+[k/4]+[j/4]+5*j)%7,各变量含义如下:(1)h是一个星期中的每一天(0为星期六;1为星期天;2为星期一;3为星期二;4为星期三;5为星期四;6为星期五)(2)q是某月的某一天(3)m是月份(3为三月,4为四月,...,12为十二月)。一月和二月分别记为上一年的13和14月。(4)j是世纪数(即|year/100|)(5)k是世纪的年数(即year%100)。
水仙花数有哪些
水仙花数有哪些水仙花数是指一个三位数,其个位、十位和百位数字的立方和等于该数本身的数。
水仙花数是一个非常有趣的数学现象,因为它们既具有一定的规律性,又具有一定的特殊性。
下面我们将详细介绍水仙花数的定义、特征以及一些实例。
首先,我们来定义水仙花数。
一个三位数可以表示为abc,其中a、b和c分别代表百位、十位和个位上的数字。
如果abc满足以下条件:a³ + b³ + c³ = abc,则abc就是一个水仙花数。
那么水仙花数有哪些呢?根据上述定义,我们可以通过枚举法找到所有的水仙花数。
首先,百位数字a的范围是1到9,因为0不满足三位数的条件。
然后,十位和个位数字b和c的范围都是0到9。
所以我们需要遍历所有的三位数,将满足条件的数列出来。
经过计算,我们找到了如下所有的水仙花数:153、370、371、407。
这四个数都满足a³ + b³ + c³ = abc的条件。
接下来,我们来研究水仙花数的特征。
首先,水仙花数是一个三位数,所以它是一个有限集合。
其次,水仙花数具有一定的规律性,即满足a³ + b³ + c³ = abc。
这个规律可以用来判断一个三位数是否为水仙花数。
对于每一个三位数abc,我们可以按照上述规则计算其立方和。
然后将计算结果与abc进行比较,如果二者相等,则该数为水仙花数;如果不相等,则不是水仙花数。
通过观察水仙花数的特征,我们可以发现一些有趣的现象。
首先,水仙花数是对称的,即百位数字与个位数字相同。
其次,水仙花数是非常罕见的,只有四个三位数满足条件。
这也反映了水仙花数的特殊性。
水仙花数的发现和研究对于我们理解数学规律、培养数学思维都具有积极的意义。
通过研究水仙花数,我们可以锻炼我们的观察力和逻辑思维能力。
此外,水仙花数还是一种数学趣味活动,可以增加我们学习数学的兴趣。
总结一下,水仙花数是指一个三位数,其个位、十位和百位数字的立方和等于该数本身的数。
JavaEE_Day5_方法和数组.doc
作业讲解:1:水仙花数循环100-1000条件:a*a*a+b*b*b+c*c*c==当前数就是水仙public class ShuiXian {public static void main(String[] args) {for(int i=100;i<1000;i++){//1:分解数//1-1如何获得个位数int a=i%10;//1-2获得十位int b=i/10%10;//1-3获得百位int c=i/100;if(a*a*a+b*b*b+c*c*c==i){System.out.println(i+"是水仙花数");}}}}2:打印99乘法表1*11*2 2*21*3 2*3 3*3***************外层控制行内层控制列 5行三角型 for(int i=1;i<=5;i++){} 内层控制列 5列 for(int j=1 j<=i;j++){}public class SanJiao {public static void main(String[] args) {Scanner input=new Scanner(System.in);System.out.println("请输入要打印的行数");int a=input.nextInt();for(int i=1;i<=a;i++){for(int j=1;j<=i;j++){System.out.print("*");}System.out.println();}}}public class SanJiao {public static void main(String[] args) {for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+(j*i)+"\t");}System.out.println();}}}1:循环的嵌套2:方法的定义和使用方法将解决一个问题的代码块组装到一起。
JAVA经典小例子(一)
JAVA经典⼩例⼦(⼀)⽤for循环完成如下案例----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------求和public class ForCircle{public static void main(String[] args){int sum=0;int random=0;for(int i=1;i<=10;i++){random=(int)(Math.random()*100+1);sum +=random;System.out.println(random);}System.out.println("合为"+sum);System.out.println("平均值为"+sum/10.0);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------求偶数和public class D{public static void main(String[] args){int sum=0;int random=0;for(int i=1;i<=10;i++){random=(int)(Math.random()*100+1);if(random % 2==0){sum +=random;System.out.println(random);}}System.out.println("合为"+sum);System.out.println("平均值为"+sum/10.0);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------求奇数和public class D{public static void main(String[] args){int sum=0;int random=0;for(int i=1;i<=10;i++){random=(int)(Math.random()*100+1);if(random % 2!=0){sum +=random;System.out.println(random);}}System.out.println("合为"+sum);System.out.println("平均值为"+sum/10.0);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------打印⽔仙花数public class D{public static void main(String[] args){for(int i=100 ;i<=999; i++){if( ((i%10)*(i%10)* (i%10)+(i/10%10)*(i/10%10)* (i/10%10)+(i/10/10)* (i/10/10)* (i/10/10) )==i){System.out.print("⽔仙花数:"+i+" , ");}}}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------统计⽔仙花数public class D{public static void main(String[] args){int count=0;for(int i=100 ;i<=999; i++){if( ((i%10)*(i%10)* (i%10)+(i/10%10)*(i/10%10)* (i/10%10)+(i/10/10)* (i/10/10)* (i/10/10) )==i){System.out.print("⽔仙花数:"+i+" , ");count++;}}System.out.print("⽔仙花数个数:"+count);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------九九乘法表public class D{public static void main(String[] args){int count=0;for(int i=1 ;i<=9; i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+(i*j)+" ");}System.out.println();}}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------⽤while循环完成如下案例求和public class D{public static void main (String[] args){int i=1;int sum=0;while(i<=10){sum += (int)(Math.random()*100+1);i++;}System.out.println("和为:"+sum);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------纸张折叠成珠穆朗玛峰⾼度的次数public class D{public static void main(String[] args){int num=0;int count=8848;int high=1;do{high = high*2;num++;}while(count>=high);System.out.print(num);}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------使⽤冒泡排序把随机⽣成的10个数从⼩到⼤排列public class D{public static void main (String[] args){int[] str = new int[10];for(int i = 0 ; i < 10 ; i ++){str[i] = (int)(Math.random()*100);}System.out.println("排序前");for(int q=0;q<str.length;q++){System.out.print(str[q]+" ");}System.out.println("");for(int x=0 ; x < str.length-1 ; x++){for(int y=0;y < str.length-x-1 ; y++ ){int temp;if (str[y]>=str[y+1]){temp=str[y+1];str[y+1]=str[y];str[y]=temp;}}}System.out.println("排序后");for(int w=0;w<str.length;w++){System.out.print(str[w]+" ");}}}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:银⾏登录业务逻辑事项//以下for实现import java.util.Scanner;public class ForCircle{public static void main(String[] args){ Scanner scan = new Scanner(System.in); int i=1; for(;i<=3;i++){ System.out.println("请输⼊密码:"); int pass = scan.nextInt(); if(pass == 123){ System.out.println("密码正确"); break; }else{ System.out.println("密码错误"); } } if(i == 4){ System.out.println("三次密码输⼊错误,请到银⾏办理吞卡业务"); } return ; }}//以下while实现import java.util.Scanner;public class ForCircle{public static void main(String[] args){Scanner scan = new Scanner(System.in);int count=1;while( true ){System.out.println("请输⼊密码:");int pass = scan.nextInt();if(pass == 123){System.out.println("密码正确");break;}else{System.out.println("密码错误,剩余"+(3-count)+"次");}count++;if(count==4){System.out.println("多次输⼊不正确,被吞卡");break;}}return ;}}嵌套循环实例:冒泡排序public class BubbleSort {public static void main (String[] args){int[] str = new int[10];for(int i = 0 ; i < 10 ; i ++){str[i] = (int)(Math.random()*100);}System.out.println("排序前");for(int q=0;q<str.length;q++){System.out.print(str[q]+" ");}System.out.println("");for(int x=0 ; x < str.length-1 ; x++){ for(int y=0;y < str.length-x-1 ; y++ ){ int temp;if (str[y]>=str[y+1]){temp=str[y+1];str[y+1]=str[y];str[y]=temp;}}}System.out.println("排序后");for(int w=0;w<str.length;w++){ System.out.print(str[w]+" ");}}}。
java小程序之水仙花数 (1)
水仙花数【实验目的】1.掌握Java程序的编译过程,以及Java程序面向对象的编写方法2.掌握类的定义与声明3.掌握对象的使用与创建4.掌握构造方法的格式及使用5.理解并熟练运用if else语句实现程序所要求的条件【实验原理】1.依次对一个三位数的每一位数的平方求和,百位数可通过除100取整得到,十位数可通过除10取整得到2.三位数中的最小数是101,最大数是999,所以水仙花数必然存在于101到999之间【实验要求】1.运用Java编写命令行程序2.编译、运行、调试、维护Java程序3.使用for循环结构4.熟练使用Eclipse调试工具进行程序调试【实验步骤】在101到1000之间任取一个数m,m除以100取整得到它的百位数a1,除以100取余再讲余数除以10取整得到它的十位数a2,除以10取余得到它的个位数,依次对这三个数a1,a2,a3的三次方求和,验证是否等于m,若相等,则m为水仙花数,打印出来;反之,则不是水仙花数,不用打印出来。
详细思路如下图所示:【问题与解决方法】问题: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字 立方和等于该数本身。
例如: 153是一个"水仙花数",因为153=1的三次方+5 的三次方+3的三次方。
程序:package shuixianhuashu;import shuixianhuashu.shuixianhuashu;public class shuixianhuashu{static Boolean isSxh(int m){int a1,a2,a3;a1=m/100;a2=m%100/10;a3=m%10;if (m<3)return false ;else if ( (a1*a1*a1+a2*a2*a2+a3*a3*a3) ==(a1*100+a2*10+a3) )return true ;elsereturn false ;比较m 与 a1^3+a2^3+a3^3若相等,则为水仙花数,输入m}public static void main(String[] args){System.out.println("1000以内的水仙花数:");shuixianhuashu s = new shuixianhuashu();for(int i=101;i<1000;i++)if(s.isSxh(i))System.out.print(i+"\t");}}运行结果:1000以内的水仙花数:153 370 371 407【实验总结】学会了对于一个三位数进行每一位数的分离,同样的,对于任意一位多位数的每一位数也可以运用同样的方式求出。
《Java语言程序设计(一)》课后习题答案解析全集
1.1 指出JAVA语言的主要特点和JAVA程序的执行过程。
答:(1)强类型;(2)编译和解释;(3)自动无用内存回收功能;(4)面向对象;(5)与平台无关;(6)安全性;(7)分布式计算;(8)多线程;程序执行过程如图所示:编写源文件,编译器编译源文件转换成字节码,解释器执行字节码。
1.2 说出开发与运行JAVA程序的重要步骤。
答:(1)编写源文件:使用一个文本编译器,如Edit或记事本,不可以使用Word.将编好的源文件保存起来,源文件的扩展名必须是.java;(2)编译Java源文件:使用Java编译器(javac.exe)编译源文件得到字节码文件;(3)运行Java程序:Java程序分为两类——Java应用程序必须通过Java解释器(java.exe)来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。
1.3 如何区分应用程序和小应用程序?答:应用程序在与源文件名字相同的类中,有main()方法,该方法代表应用程序的入口; 小应用程序必须有一个Applet类的子类,该类称作主类,必须用public修饰。
1.4 说出JAVA源文件的命名规则。
答:源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的public类同名。
1.6 JAVA语言使用什么字符集?共有多少个不同的字符?答:Java语言使用Unicode字符集,共有65535个字符。
1.7 JAVA语言标识符的命名规则是什么?(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过255个字符1.8 JAVA有那些基本数据类型,它们的常量又是如何书写的?1.9 指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。
整型常量: 4)0xABCL,8)003,10)077,12)056L浮点数类型常量:3)-1E-31,5).32E31 13)0.,14).0两者都不是: 1),2),6),7),9),11)第二章运算和语句2.1 Java的字符能参加算术运算吗?可以。
水仙花算法(阿姆斯特朗数)
⽔仙花算法(阿姆斯特朗数)
什么是⽔仙花数
⽔仙花数也被称为超完全数字不变数、⾃恋数、⾃幂数、阿姆斯壮数或阿姆斯特朗数,严格的定义⽔仙花数,是指⼀个 3 位数,它的每个位上的数字的 3次幂之和等于它本⾝。
如371 = 3^3 + 7^3+ 1^3,则371是⼀个⽔仙花数。
Python中的求解思路
根据⽔仙花数的定义,可以理出下⾯的编程思路:
1. 新建⼀个空列表x,⽤以存储所有的⽔仙花数
2. 在For循环中,对100-999之间的任意⼀个整数i,逐个分解出其个位数a、⼗位数b和百位数c,⽐较a、b、c三个数字的3次幂之和是否等于i本⾝,若等于,则将i添加到列表x中
3. 最后输出的x即为求解的所有⽔仙花数
注意,在将⼀个整数i分解出个位数a、⼗位数b和百位数c时,个位数a是i除以10后得到的余数,百位数c是i除以100后得到的余数,⽽⼗位数则是先将i整除10后得到整数部分,再将整数部分除以10后得到的余数数即为⼗位数,上⾯代码运⾏结果如下,得到所有的⽔仙花数为[153,370,371,407]:
代码如下图所⽰:
# coding=utf-8
x = []
for i in range (100,10000):
a = i % 10 #个位数
b = (i / 10) % 10 #⼗位数
c = i / 100 #百位数
if(a**3 + b**3 + c**3) == i:
x.append(i)
print(x)
#代码优化
y = {i for i in range(100,10000) if ((i%10)**3 + ((i/10)%10)**3+(i/100)**3) == i}
print(y)。
java实验报告-总结
实验报告□实践报告□课程名称:Java语言程序设计实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、Java异常处理多线程编程、图形用户界面编程实验、实践地点:致向楼301专业班级:软件1531 学号:2015006446学生姓名:关玉芬指导教师:相洁2017 年1月8日else System.out.print("输出结果为"+i*4);x.close();}}6. package shiyan;public class a6 {public static void main(String[] args) {int i,j=0;for(i=1900;i<=2100;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){ j++;if(j%5==0)System.out.println(i);else{System.out.print(i);System.out.print(" ");}}}}} 五、实验结果1.2.3.4.5.6.六、讨论、心得初步掌握了Eclipse集成开发环境。
掌握Java 基本数据类型、运算符与表达式、数组的使用方法,语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
、对JA V A程序设计有初步的了解System.out.println("字符串的单词数为"+num);sr.close();}}五、实验结果1..2.3.六、实验心得通过本次实验掌握数组的声明、分配空间及初始化;理解多维数组(重点掌握二维);掌握String 类的特点及常用方法的使用;掌握StringBuffer 类的特点及常用方法的使用;掌握String 类和StringBuffer 类的区别;掌握equal 方法与==的区别;但是本次练习中,我也出现了一些错误,是由于知识上的失误和不小心犯下的低级错误,但是我努力改正。
水仙花数
水仙花数水仙花什么是水仙花数春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)常见水仙花数三位的水仙花数共有4个:153,370,371,407;四位的水仙花数共有3个:1634,8208,9474;五位的水仙花数共有3个:54748,92727,93084;六位的水仙花数只有1个:548834;七位的水仙花数共有4个:1741725,4210818,9800817,9926315;八位的水仙花数共有3个:24678050,24678051,88593477…………使用高精度计算,可以得到超过INT类型上限的水仙花数:5: 930845: 927275: 547486: 5488347: 98008177: 42108187: 17417257: 99263158: 246780508: 246780518: 885934779: 1465112089: 9129851539: 4723359759: 53449483610: 467930777411: 3216404965011: 4002839422511: 4267829060311: 4938855060611: 3216404965111: 9420459191411: 4470863567911: 8269391657814: 2811644033596716: 433828176939137016: 433828176939137117: 3587569906225003517: 2189714258761207519: 328958298444318703219: 492927388592808882619: 449812879116462486920: 6310542598859969391621: 44917739914603869730721: 12846864304373139125223: 2790786500997705256781423: 3545259010403169193594323: 2787969489305407447140523: 2188769684112291628885824: 17408800593806529302372224: 188451485447897896036875(为环保起见,24位以上的水仙花数略)理论上,最大的水仙花数不超过34位。
java实验报告-分析
实验报告□实践报告□课程名称:Java语言程序设计实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、Java异常处理多线程编程、图形用户界面编程实验、实践地点:致向楼301专业班级:软件1531 学号:2015006446学生姓名:关玉芬指导教师:相洁2017 年1月8日实验一Java语言基础一、实验目的和要求(1) 通过实验,掌握Java语言程序设计的基本方法。
(2) 学会Java语言中标示符的命名、运算符和表达式的应用。
(3) 熟练地掌握Java程序流程控制语句的应用。
二、实验内容1.编写应用程序,计算100(含100)以内所有偶数的和。
2.“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。
编写程序,求所有的水仙花数。
3.编写一个程序,求1-100间的素数。
4. 有一函数:x (x<1)Y= 3x-2 (1≤x<10)4x (x≥10)写一程序,给定x值,输出y值。
5. 使用for循环语句,编写程序输出以下图案。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆6.编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一行。
判断年是否为闰年的条件是:①若年号可以被4整除,而不能被100整除,则是闰年;②若年号可以被400整除,也是闰年。
三、主要仪器设备使用的计算机惠普:硬件配置Win7、软件环境eclipse四、实验代码1. public class a1 {public static void main(String[] args) {int i,sum=0;for(i=0;i<=100;i++){if(i%2==0)sum+=i;}System.out.println(sum);}}2. public class a2 {public static void main(String[] args) {int i,a,b,c;for(i=100;i<=999;i++){a=i%10;b=(i-a)%100/10;c=(i-b*10-a)/100;if(i==a*a*a+b*b*b+c*c*c){System.out.println(i);}}}}3. public class a3 {public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=2;i<=100;i++) {boolean t = false;for(int j=2;j<i;j++){if(i%j==0){t=false;break;}else {t=true;}}if(t) System.out.print(i+" ");}}}4. public class a4 {public static void main(String[] args) {int i,j;for(i=1;i<=4;i++){for(j=1;j<=((-1)*i+4);j++)System.out.print(" ");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}for(i=3;i>=1;i--){for(j=1;j<=((-1)*i+4);j++)System.out.print(" ");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}}}5. import java.util.*;public class a5 {public static void main(String[] args) {Scanner x=new Scanner(System.in);System.out.println("请输入一个大于1的整数");int i=x.nextInt();System.out.println("你刚才输入的数为"+i);if(i<1) System.out.print("输出结果为"+i);else if (i>=1&&i<10) System.out.print("输出结果为"+(i*3-2));else System.out.print("输出结果为"+i*4);x.close();}}6. package shiyan;public class a6 {public static void main(String[] args) {int i,j=0;for(i=1900;i<=2100;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){ j++;if(j%5==0)System.out.println(i);else{System.out.print(i);System.out.print(" ");}}}}} 五、实验结果1.2.3.4.5.6.六、讨论、心得初步掌握了Eclipse集成开发环境。
Java实验报告一及作业总结二
Java实验报告⼀及作业总结⼆Java实验报告实验⼀ Java开发环境与简单Java程序⼀、实验⽬的(1)熟悉JDK开发环境(2)熟练掌握结构化程序设计⽅法⼆、实验内容1. 打印输出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个3位数,其中各位数字⽴⽅和等于该数本⾝。
例如,153是⼀个“⽔仙花数”。
2. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
3. 编程求1!+2!+3!+…+20!。
4. 编写Java程序,计算8+88+888+…前10项之和。
5. ⼀个数如果恰好等于它的因⼦之和,这个数就称为完数。
编写程序输出1000以内的所有完数。
6. 编写应⽤程序,输出满⾜1+2+3+…+n<8888的最⼤正整数。
7. 使⽤for循环打印下⾯的图形。
三、实验过程1. 打印输出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个3位数,其中各位数字⽴⽅和等于该数本⾝。
例如,153是⼀个“⽔仙花数”。
实验源码:实验结果:1533703714072. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
实验源码:实验结果:-5003.编程求1!+2!+3!+…+20!。
实验源码:实验结果:40379134.编写Java程序,计算8+88+888+…前10项之和。
实验源码:实验结果:12866086085. ⼀个数如果恰好等于它的因⼦之和,这个数就称为完数。
编写程序输出1000以内的所有完数。
实验源码:实验结果:6284966. 编写应⽤程序,输出满⾜1+2+3+…+n<8888的最⼤正整数。
实验源码:实验结果:1327. 使⽤for循环打印下⾯的图形。
四、实验总结:觉得还是要多练题,增加⾃⼰的逻辑,解决相关问题。
总结报告:⼀:类的定义:基本⽅式;public static 返回值类型⽅法名(参数类型参数名称,.......){⽅法体; return 返回值;}⽅法的三种调⽤⽅式;注意:void 只能⽤于单独调⽤;要有⼀个更重要的地⽅在学习类的定义的时候,定义成员⽅法的时候与基本⽅法不同,成员⽅法他不需要static关键字,这个要注意!熟悉代码 这⾥说明⼀下什么时候⽤什么时候不⽤static关键字:在定义成员⽅法时不⽤,即因为此时定义的⽅法将要由对象调⽤,⽽不像之前那样与主⽅法⼀起定义在⼀个类当中且由主⽅法直接调⽤。
java考试代码例题
Java复习题汇总编程题1、编程序,输入a,b,c,求方程a2x+bx+c=0 的解。
package一元二次方程2;import java。
util。
Scanner;public class一元二次方程2 {public static void main(String[]args) {Scanner reader=new Scanner(System.in);double d=0;int i=0;double a=0;double b=0;double c=0;double dis=0;do{i++;if(i>1){System。
out。
println("数值错误,请重新输入:”);}System.out.println("请输入a的值:”);a=reader.nextInt();System。
out。
println(”请输入b的值:");b=reader.nextInt();System。
out。
println("请输入c的值:");c=reader。
nextInt();double dis2=b*b—4*a*c;d=dis2;dis=Math。
sqrt(b*b—4*a*c);}while(d<0);double x1=(-1*b+dis)/(2*a);double x2=(-1*b-dis)/(2*a);System.out。
println(x1);System.out。
println(x2);}}2、编程计算: 1*2*3+3*4*5+…+99*100*101 的值。
package 作业618;public class 作业618 { public static void main (String[] args ) { int sum =0;for (int i =1;i <=50;i ++){ int a =(2*i -1)*(2*i )*(2*i +1);sum =sum +a ;}System 。
Java三种求水仙花数的方法
Java三种求⽔仙花数的⽅法⽔仙花数:⽔仙花数是三位数,它的各位数字的⽴⽅和等于这个三位数本⾝,例如:370=33+73+00;371=33+73+13,370、371就是⼀个⽔仙花数注意:要判断⼀个三位数是不是⽔仙花数,得先取得这个三位数的的个位,⼗位和百位普通for循环:public class Daffodil {public static void main(String[] args) {int count = 0; //定义⽔仙花数的个数for(int i=100;i<=10000;i++){ //⽔仙花数范围int b = i/100; //取得百位数int s = (i-100*b)/10; //取得⼗位数int g = (i-s*10-b*100); //取得个位数if(i==g*g*g+s*s*s+b*b*b){ //⽔仙花数判定System.out.print(i+" "); //输出符合条件的数count++;}}System.out.println(); //换⾏System.out.println("⽔仙花数总共有"+count+"个"); //输出⽔仙花数的总数}}while循环:public class Daffodil {public static void main(String args[]){int i=100;int count=0; //定义⽔仙花数的个数while(i<10000){int b = i/100; //取得百位数int s = (i-100*b)/10; //取得⼗位数int g = (i-s*10-b*100); //取得个位数if(i==g*g*g+s*s*s+b*b*b){ //⽔仙花数判定System.out.print(i+" "); //输出符合条件的数count++;}i+=1;}System.out.println();System.out.println("⽔仙花数总共有"+count+"个"); //输出⽔仙花数的总数}}do-while循环:public class Daffodil {public static void main(String args[]){int i=100;int count=0; //定义⽔仙花数的个数do{i+=1;int b = i/100; //取得百位数int s = (i-100*b)/10; //取得⼗位数int g = (i-s*10-b*100); //取得个位数if(i==g*g*g+s*s*s+b*b*b){ //⽔仙花数判定System.out.print(i+" "); //输出符合条件的数count++;}}while(i<10000);System.out.println();System.out.println("⽔仙花数总共有"+count+"个"); //输出⽔仙花数的总数}}。
水仙花数是指一个n位正整数(n≥3),它的每位数字的n次幂之和等于它本身
水仙花数是指一个n位正整数(n≥3),
它的每位数字的n次幂之和等于它本身.三位水仙花
水仙花数,又称“水仙花瓣数”、“超完全数字不变数”等,是指一个n位正整数(n ≥ 3),它的每一位上的数字的n次幂之和等于它本身的数字。
水仙花数以三位数为最常见形式,例如153 = 1^3 + 5^3 + 3^3。
三位数的水仙花数有153、370、371、407等,所以又被称为三位水仙花数。
这些数字是
普通数字中特殊有趣的数字,有一定的解法可以计算出它。
首先,要得到一个三位水仙花数,需要三个不同的数字,比如1-9,并将它们按照位数放
在不同位置上。
三个数字分别是百位数、十位数和个位数,分别用a、b、c表示,最后,
将三个数字乘以3次方,分别计算a^3、b^3、c^3的值。
以153为例,计算153 = 1^3 + 5^3 + 3^3,通过计算可以得到153是一个三位水仙花数。
需要指出的是,此外,还有其他位数的水仙花数,比如四位数的话可以有1634、8208等,五位数的话可以有41519等,更多的数字也都可以满足上面的条件。
其实,找出这样的水
仙花数也并不难,它只是一个思路而已,只要有三个相同的数字乘以3次方,即可得出结果。
总之,水仙花数是一类有趣又特殊的数字,它们可以使得一般数字充满活力,吸引更多的
人们去研究及探索它。
java常见算法题目
java常见算法题⽬1: JAVA经典算法40题2: 【程序1】题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第四个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少? 3: 1.程序分析:兔⼦的规律为数列1,1,2,3,5,8,13,21....4: public class exp2{5: public static void main(String args[]){6: int i=0;7: for(i=1;i<=20;i++)8: System.out.println(f(i));9: }10: public static int f(int x)11: {12: if(x==1 || x==2)13: return 1;14: else15: return f(x-1)+f(x-2);16: }17: }18: 或19: public class exp2{20: public static void main(String args[]){21: int i=0;22: math mymath = new math();23: for(i=1;i<=20;i++)24: System.out.println(mymath.f(i));25: }26:27: }28: class math29: {30: public int f(int x)31: {32: if(x==1 || x==2)33: return 1;34: else35: return f(x-1)+f(x-2);36: }37: }38:39: 【程序2】题⽬:判断101-200之间有多少个素数,并输出所有素数。
40: 1.程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,41: 则表明此数不是素数,反之是素数。
42: public class exp2{43: public static void main(String args[]){44: int i=0;45: math mymath = new math();46: for(i=2;i<=200;i++)47: if(mymath.iszhishu(i)==true)48: System.out.println(i);49: }50: }51: class math52: {53: public int f(int x)54: {55: if(x==1 || x==2)56: return 1;57: else58: return f(x-1)+f(x-2);59: }60: public boolean iszhishu(int x)61: {62: for(int i=2;i<=x/2;i++)63: if (x % 2==0 )64: return false;65: return true;66: }67: }68:69: 【程序3】题⽬:打印出所有的 "⽔仙花数 ",所谓 "⽔仙花数 "是指⼀个三位数,其各位数字⽴⽅和等于该数本⾝。
JAVA经典算法练习题
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
【程序31】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
【程序32】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0 < <4)
(3)将上面二者进行&运算。
【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
【程序11】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
【程序42】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
【程序43】
题目:求0—7所能组成的奇数个数。
【程序44】
题目:一个偶数总能表示为两个素数之和。
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
本题要求编写程序,输出给定正整数m和n区间内的所有三位水仙花数
本题要求编写程序,输出给定正整数m和n区间内的所有三位水仙花数.三位水仙花数,即本题要求编写程序,输出给定正整数m和n区间内的所有三位水仙花数。
水仙花数又称超完全数字不变数、自恋数、自幂数,是指一个三位数,其各位数字的立方和等于该数本身,即:abc=a^3+b^3+c^3,例如153=1^3+5^3+3^3。
现在,用C++语言写一个程序,给定两个正整数m和n,找出他们之间的所有三位水仙花数,打印出来。
首先,根据输入的正整数m和n,构造一个从m到n的循环,即for(i=m; i<=n; i++),遍历这个区间的每一个数字。
然后,判断每一个数字是否是水仙花数。
如果是,就将它打印出来。
下面是C++代码:#include <iostream>using namespace std;// 判断num是否是水仙花数bool isNarcissisticNumber(int num){int a = num/100; // 百位int b = num/10%10; // 十位int c = num%10; // 个位if(num == a*a*a + b*b*b + c*c*c)return true;elsereturn false;}int main(){int m, n; // 输入的正整数m和ncout << "Please input m and n: " << endl;cin >> m >> n;cout << "The three-digit Narcissistic Numbers between " << m << " and " << n << " are:" << endl;for (int i = m; i <= n; i++){if(isNarcissisticNumber(i))cout << i << " ";}cout << endl;return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
private static final BigInteger MIN;
private static final BigInteger MAX;
/**
conti当前值在第10位。
if (back()) {
break;
}
// 最小值匹配
if (pareTo(MAX) > 0) {
return false;
}
// 最大值匹配
if (pareTo(MIN) < 0) {
for (int i = 0; i <= s; i++) {
// new Main().test(i, startTime);
// 启动十个线程同时运算
final int startValue = i;
new Thread(new Runnable() {
while (countArray[offset] == 0) {
if (offset > 0) {
offset--;
} else {
return true;
// 找到最小值与最大值间首部相同的部分
int[] sameCountArray = new int[10];
for (int i = 0; i < SIZE; i++) {
char c;
if ((c = minStr.charAt(i)) == maxStr.charAt(i)) {
sumArray[offset] = sumArray[offset - 1].add(p(9 - offset).multiply(n(num)));
}
}
/**
* 检验当前数据是否匹配
*
* @return
if (checkPersentArray()) {// 检查当前提交数据是否匹配
// 匹配且总数正好为SIZE的位数,那么就是求解的值
if (countSumArray[offset] == SIZE) {
* 0-SIZE间的BigInteger
*/
private static final BigInteger n(int i) {
return (BigInteger) ht.get("n_" + i);
if (offset == 0) {
countSumArray[offset] = num;
sumArray[offset] = p(9 - offset).multiply(n(num));
} else {
countSumArray[offset] = countSumArray[offset - 1] + num;
} else {
if (back()) {
break;
}
}
}
System.out.println(Thread.currentThread() + " End,Spend time " + (System.currentTimeMillis() - startTime) / 1000 + "s");
// 如果当前值的总数为SIZE位,那么判断该值是不是需要查找的值
if (countSumArray[offset] == SIZE) {
String sumStr = sumArray[offset].toString();
BigInteger sum = ZERO;
return false;
}
String minStr = pareTo(MIN) > 0 ? minVal.toString() : MIN.toString();
String maxStr = pareTo(MAX) < 0 ? maxVal.toString() : MAX.toString();
success();
}
// 总数不为SIZE,且当前值不在第10位(即不等于0)
if (offset != 9) {
next();
private int[] countSumArray = new int[10]; // 个数总数
private BigInteger[] sumArray = new BigInteger[10];// 值总数
private int offset = 0;// 浮标
}
/**
* 主函数
*/
public static void main(String[] args) {
final long startTime = System.currentTimeMillis();
int s = SIZE > 9 ? 9 : SIZE;
public void run() {
new Main().test(startValue, startTime);
}
}).start();
}
}
*/
private void test(int startValue, long startTime) {
// 设置9的个数
offset = 0;
setValue(startValue);
while (true) {
import java.math.BigInteger;
import java.util.Hashtable;
public class Main {
private static final int SIZE = 21;
private int[] countArray = new int[10]; // 个数列表
sameCountArray[c - '0'] = sameCountArray[c - '0'] + 1;
} else {
break;
}
}
// 判断如果相同部分有数据大于现在已记录的位数,返回false
return true;
}
}
/**
* 测试程序
*
* @param startValue
* 测试匹配数中包含9的个数
* @param startTime
* 程序启动时间
*/
private boolean checkPersentArray() {
BigInteger minVal = sumArray[offset];// 当前已存在值
BigInteger maxVal = sumArray[offset].add(p(9 - offset).multiply(n(SIZE - countSumArray[offset])));// 当前已存在值+可能存在的最大值
for (int i = 0; i < sumStr.length(); i++) {
sum = sum.add(p(sumStr.charAt(i) - '0'));
}
return pareTo(sumArray[offset]) == 0;
}
/**
*
* 回退浮标,找到最近的浮标,并减一
*
* @return
*/
private boolean back() {
// 回退浮标,找到最近的浮标,并减一
if (countArray[offset] == 0) {
/**
* 设置当前浮标对应的个数,个数的总数,值总数
*
* @param num
* 个数
*/
private void setValue(int num) {
countArray[offset] = num;
for (int i = 0; i <= offset; i++) {
if (countArray[i] < sameCountArray[9 - i]) {
return false;
}
}
}
}
}
if (offset > 0) {
setValue(countArray[offset] - 1);
return false;
} else {
}
/**
* 将浮标指向下一位数
*
* @return
*/
private void next() {
offset++;
setValue(SIZE - countSumArray[offset - 1]);
}
return true;
}
/**
* 退出循环,打印
*
* @return
*/
private void success() {
System.out.println("find a match number:" + sumArray[offset]);