/* 4、随机生成一个100以内的整数,猜数字游戏 从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了, 并统计一共猜了多少次 */ class Test09_Exer4{ public static void main(String[] args){ //随机生成一个100以内的整数,[0,100) /* Math.random() -->[0,1)的小数 Math.random()*100 -->[0,100)的小数 [0,100)的整数 (int)(Math.random()*100 ) */ int randNum = (int)(Math.random()*100); // System.out.println(randNum); //从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了, java.util.Scanner input = new java.util.Scanner(System.in); int num;//挪到do{}上面,提升作用域 int count = 0;//统计次数 do{ System.out.print("猜数(范围[0,100):"); num = input.nextInt(); count++;//输入一次,就代表猜一次 if(num > randNum){ System.out.println("大了"); }else if(num<randNum){ System.out.println("小了"); } }while(num!=randNum);//条件成立,重复执行循环体语句 System.out.println("一共猜了:" + count + "次"); } }
/* 循环嵌套: 5、输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。 例如: 153 = 1*1*1 + 5*5*5 + 3*3*3 */ class Test16_Exer5{ public static void main(String[] args){ //所谓水仙花数是指一个3位数==>[100,999] //百位:1-9 //十位:0-9 //个位:0-9 /* 当bai=1, shi会从0变到9整个来一轮 当shi=0,ge会从0变到9整个来一轮 */ for(int bai = 1; bai<=9; bai++){ for(int shi = 0; shi<=9; shi++){ for(int ge = 0; ge<=9; ge++){ if(bai*bai*bai + shi*shi*shi + ge*ge*ge == bai*100+shi*10+ge){ System.out.println(bai*100+shi*10+ge); } } } } } }
/* 6、从1循环到150并在每行打印一个值, 另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”, 在每个7的倍数行上打印输出“baz”。 */ class Test07_Exer6{ public static void main(String[] args){ //从1循环到150 for(int i=1; i<=150; i++){ //在每行打印一个i的值 //System.out.println(i);//输出i之后,立刻换行 System.out.print(i);//只打印i的值 //每个3的倍数行上打印出“foo” if(i%3==0){ //System.out.println("foo");//输出foo后立刻换行 System.out.print("\tfoo");//这里加\t是为了好看 } //在每个5的倍数行上打印“biz” if(i%5==0){ System.out.print("\tbiz"); } //在每个7的倍数行上打印输出“baz” if(i%7==0){ System.out.print("\tbaz"); } //最后把这一行的事全部完成后,再换行 //System.out.print("\n"); System.out.println();//只打印换行 } } }
/* 7、输入两个正整数m和n,求其最大公约数和最小公倍数 */ class Test14_Exer7{ public static void main(String[] args){ //输入两个正整数m和n java.util.Scanner input = new java.util.Scanner(System.in); int m; while(true){ System.out.print("请输入第一个正整数m的值:"); m = input.nextInt(); if(m<=0){ System.out.println(m + "不是正整数,请重写输入!"); }else{ break; } } int n; while(true){ System.out.print("请输入第一个正整数n的值:"); n = input.nextInt(); if(n<=0){ System.out.println(n + "不是正整数,请重写输入!"); }else{ break; } } System.out.println("两个正整数:" + m + "," + n); //求m和n的最大公约数和最小公倍数 /* 1、概念 公约数:能够把m和n都整除,就是它俩的公约数 例如:6和9,公约数:1,3 9和18,公约数:1,3,9 5和13,公约数:1 公倍数:能够被m和n都整除的,就是它俩的公倍数 例如:6和9,公倍数:18,36.... 9和18,公倍数:18,36... 5和13,公倍数:65,.... 2、如何找最大公约数 例如:6和9 从6开始,9%6==0? 6%6==0? 9%5==0? 6%5==0? 9%4==0? 6%4==0? 9%3==0? 6%3==0? binggou找到了 结束查找 例如:9和18 从9开始 9%9==0? 18%9==0? binggou找到了 结束查找 例如:5和13 从5开始 5%5==? 13%5==0? 5%4==? 13%4==0? 5%3==? 13%3==0? 5%2==? 13%2==0? 5%1==? 13%1==0? binggou找到了 结束查找 其实只要找到5的平方根就可以了 */ //第一步:找出m和n中最大值和最小值 int max = m>=n ? m : n; int min = m<n ? m : n; //第二步:从小的开始查找 //这里的1也可以修改为min的平方根 int maxYue = 1; for(int i=min; i>=1; i--){ //看i是否能够同时把m和n都整除 if(m%i==0 && n%i==0){ maxYue = i; break; } } System.out.println(maxYue +"是" + m + "和" + n + "的最大公约数"); //最小公倍数 = m*n / 最大公约数 //System.out.println(m*n/maxYue +"是" + m + "和" + n + "的最小公倍数"); //如果不知道这个公式 //从max开始找,一直找到m*n for(int i=max; i<=m*n; i++){ if(i%m==0 && i%n==0){ System.out.println(i +"是" + m + "和" + n + "的最小公倍数"); break; } } } }
/* 8、打印1-100之间数,其中3、5、7的倍数不打印 */ class Test13_Exer8{ public static void main(String[] args){ /* 不使用continue */ for(int i=1; i<=100; i++){ //其中3、5、7的倍数不打印 //如果这个数不是3,5,7的倍数就打印 if(i%3!=0 && i%5!=0 && i%7!=0){ System.out.println(i); } } System.out.println("-----------------------"); /* 使用continue */ for(int i=1; i<=100; i++){ //其中3、5、7的倍数不打印 //如果是3,5,7的倍数就跳过打印语句 if(i%3==0 || i%5==0 || i%7==0){ //break;//如果用break,那么只打印1和2 continue; } System.out.println(i); } } }
/* 9、一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身的约数) 例如6=1+2+3.编程 找出1000以内的所有完数 */ class Test17_Exer9{ public static void main(String[] args){ //找出1000以内的所有完数 for(int i=1; i<1000; i++){ //判断i是否是完数,如果是就打印i /* 完数? 一个数如果恰好等于它的因子之和 例如:6的因子:1,2,3 1,2,3,6是6的约数,能够把6给整除了 因子:除了6本身以外的约数 例如:18的因子:1,2,3,6,9 如何判断i是否是完数? (1)先找出i的所有的因子,并且累加它的所有的因子 (2)判断因子之和与i是否相等,如果相等就是完数 */ //(1)先找出i的所有的因子,并且累加它的所有的因子 int iSum = 0; for(int j=1; j<i; j++){ //如果j能够把i整除了,j就是i的因子 if(i%j==0){ iSum += j; } } //(2)判断因子之和与i是否相等,如果相等就是完数 if(i == iSum){ System.out.println(i); } } } }
//12、找出1-100之间所有的素数(质数) class Test18_Exer12{ public static void main(String[] args){ //找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){ //里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i /* 如何判断i是否是素数 (1)找出i的所有的约数,并累加它们的和 例如: i=5,它的约数有1和5,约数和:6 i=11,它的约数有1和11,约数和:12 i=18,它的约数有1,2,3,6,9,18,约数和:39 (2)如果某个i的约数和 == i+1,那么i就是素数 */ //(1)找出i的所有的约数,并累加它们的和 int iSum = 0; for(int j=1; j<=i; j++){ if(i%j==0){ //j是i的约数 iSum += j; } } //(2)如果某个i的约数和 == i+1,那么i就是素数 if(iSum == i+1){ System.out.println(i); } } } }
//12、找出1-100之间所有的素数(质数) class Test18_Exer12_2{ public static void main(String[] args){ //找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){ //里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i /* 如何判断i是否是素数 (1)找出i在[2,i-1]之间的约数的个数 (2)如果这个个数是0,那么i就是素数 */ int iCount = 0; for(int j=2; j<i; j++){ if(i%j==0){//j是i在[2,i-1]之间的约数 iCount++; } } //(2)如果这个个数是0,那么i就是素数 if(iCount == 0){ System.out.println(i); } } } }
//12、找出1-100之间所有的素数(质数) class Test18_Exer12_3{ public static void main(String[] args){ //找出1-100之间所有的素数(质数) //1-100之间 for(int i=1; i<=100; i++){ //里面的代码会运行100遍 //每一遍i的值是不同的,i=1,2,3,4,5...100 //每一遍都要判断i是否是素数,如果是,就打印i /* 如何判断i是否是素数 (1)假设i是素数 boolean flag = true;//true代表素数 (2)找i不是素数的证据 如果在[2,i-1]之间只要有一个数能够把i整除了,说明i就不是素数 修改flag = false; (3)判断这个flag */ //(1)假设i是素数 boolean flag = true;//true代表素数 //(2)找i不是素数的证据 for(int j=2; j<i; j++){ if(i%j==0){ flag = false;//找到一个就可以了 break; } } //(3)判断这个flag if(flag){ System.out.println(i); } } } }
//12、找出1-100之间所有的素数(质数)class Test18_Exer12_2{public static void main(String[] args){//找出1-100之间所有的素数(质数)//1-100之间for(int i=1; i<=100; i++){//里面的代码会运行100遍//每一遍i的值是不同的,i=1,2,3,4,5...100//每一遍都要判断i是否是素数,如果是,就打印i/*如何判断i是否是素数(1)找出i在[2,i-1]之间的约数的个数(2)如果这个个数是0,那么i就是素数*/int iCount = 0;for(int j=2; j<i; j++){if(i%j==0){//j是i在[2,i-1]之间的约数iCount++;}}//(2)如果这个个数是0,那么i就是素数if(iCount == 0){System.out.println(i);}}}}
原文:https://www.cnblogs.com/douyunpeng/p/13388061.html