使用Java语言做几个小小练习题吧
创始人
2024-04-03 05:38:53
0

对于Java语言,笔者刚刚入门!但是,也酝酿了许久!今日,打算发一篇小小的练习题:由Java语言实现(初级),特别简单,在C语言初级阶段,笔者都已经见识过,做过了!!表示,小白合适的练习题!!

  1. 判断一个数字是不是素数(排除1和负数)三种方法求解
  2. 求出1到100之间的所有素数!
  3. 输出乘法口诀(可以指定乘法口诀的大小)!
  4. 求两个数字的最大公约数(辗转相除法)!
  5. 求出0到999之间的所有“水仙花数”,并输出!
  6. 求出某个数中二进制1的个数!!(三种方法)
  7. 获取一个二进制中所有的偶数位和所有的奇数位,并分别输出二进制序列!
  8. 编写程序,数一下:1到100之间的所有整数中,出现多少个数字9!(此时99算两个!)
  9. 判断1到100之间有多少个数字里面有9!(此时99算一个!)
  10. 打印X图形!(随机定义大小)

对于上述的练习题,笔者有的个别题目涉及到了多种方法!!请大家仔细辨别!!

注意,本文笔者创建了一个文件名,叫做:Add.java  !请大家不要弄混肴!!要保持文件名与类名一致!

1.判断一个数字是不是素数(排除1和负数)三种方法求解

判断一个数字是不是素数,我们可以根据素数的定义来进行!(方法1)

请看笔者的代码:

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner =new Scanner(System.in);int n = scanner.nextInt();int i=2;for(i=2;i

上述代码的运行结果为:

 方法2

其实对于一个数字n 可以写成n=a*b的形式!!

对于:16这个数字而言!16=1*16,  16=2*8;   16=4*4!

因此,我们发现对于一个数字n,一定会有一个数字小于等于n/2是n的因数!

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner =new Scanner(System.in);int n = scanner.nextInt();int i=2;for(i=2;i<=n/2;i++) {if(n%i==0) {//System.out.println(n+"不是素数!");break;}}if(i>n/2) {System.out.println(n+"是素数!");}}
}

注意一下区别!!仅仅更改了部分代码!!

方法3!

其实对于一个数字n 可以写成根号的形式!!

对于:16这个数字而言!16=1*16,  16=2*8;   16=4*4!

因此,我们发现对于一个数字n,一定会有一个数字小于等于根号n的!

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner =new Scanner(System.in);int n = scanner.nextInt();int i=2;for(i=2;i<=Math.sqrt(n);i++) {if(n%i==0) {// System.out.println(n+"不是素数!");break;}}if(i>Math.sqrt(n)) {System.out.println(n+"是素数!");}}
}

2.求出1到100之间的所有素数!

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();for (int j =1; j<=n; j++) {int i=2;for (i=2;i<=Math.sqrt(j);i++) {if(j%i==0) {break;}}if(i>Math.sqrt(j)) {System.out.println(j+"是素数!");}}}
}

上述代码的运行结果为:

 3.输出乘法口诀(可以指定乘法口诀的大小)

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();for(int i=1;i<=n;i++) {for(int j=0;j<=i;j++) {System.out.print(i+"*"+j+"="+i*j+"  ");}System.out.println();}}
}

代码的运行结果为:

 4.求两个数字的最大公约数(辗转相除法)

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int a = scanner.nextInt();int b = scanner.nextInt();int c=a%b;while(c!=0) {a=b;b=c;c=a%b;}System.out.println("最大公约数为:"+b);}
}

代码的运行结果为:

5. 求出0到999之间的所有“水仙花数”,并输出

对于得到水仙花数,我们主要有两个难点!(以153为例!)

  1. 如何获得每一位数字??
  2. 如何获得这个数字是几位数??

 

 

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();for (int i = 0; i < n ; i++) {//判断是几位数?int count=0;int tmp=i;while(tmp!=0) {count++;tmp=tmp/10;}//此时tmp为0;但是i不为0tmp = i;int sum=0;while(tmp!=0) {sum+=Math.pow(tmp%10,count);tmp=tmp/10;}if(sum==i) {System.out.println(i);}}}
}

代码的运行结果为:

 6.求出某个数中二进制1的个数!!(三种方法)

方法1

 假设该数字为15:二进制中含有4个1

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();int count=0;for (int i = 0; i < 32; i++) {if(((n>>>i)&1)!=0) {count++;}}System.out.println(count);}
}

代码的运行结果为:

 上述代码中:if(((n>>>i)&1)!=0)  : 无符号右移!!可以解决负数死循环的问题!!当输入的数字为负数的时候,符号数为1,右移以后,增添1,然后会导致死循环!!

对于上述的代码,如果输入的数字很小,但是也会运行32次!!所以显得有点浪费循环的次数!!

方法2

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();int count=0;while(n!=0) {if((n&1)!=0) {count++;}n=n>>>1;}System.out.println(count );}
}

方法3

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();int count=0;while(n!=0) {n=n&(n-1);count++;}System.out.println(count );}
}

7.获取一个二进制中所有的偶数位和所有的奇数位,并分别输出二进制序列

该问题主要在于:判断一个数的二进制中是1还是0就可以了!因此,可以按位与一个1就可以求出!

从右往左数!!

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();System.out.println("偶数位:");for (int i = 31; i >=1; i=i-2) {System.out.print(((n>>i)&1)+" ");}System.out.println();System.out.println("奇数位:");for (int i = 30; i >=0; i=i-2) {System.out.print(((n>>i)&1)+" ");}}
}

代码的运行结果为:

 8.编写程序,数一下:1到100之间的所有整数中,出现多少个数字9!(此时99算两个!)

public class Add {public static void main(String[] args) {int count=0;for(int i=0;i<=100;i++) {if(i%10==9) {count++;}if(i/10==9) {count++;}}System.out.println(count);}
}

 代码的运行结果为:

 9.判断1到100之间有多少个数字里面有9!(此时99算一个!)

import java.util.Scanner;public class Add {public static void main(String[] args) {int count=0;for(int i=0;i<=100;i++) {if(i%10==9) {count++;} else if(i/10==9) {count++;}}System.out.println(count);}
}

 代码的运行结果为:

 10.打印X图形!(随机定义大小)

import java.util.Scanner;public class Add {public static void main(String[] args) {Scanner scanner = new Scanner((System.in));int n = scanner.nextInt();for(int i=0;i

 代码的运行结果为:

 

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...