1、判断一个数字是否是素数(质数)
//方法1:
import java.util.Scanner;
public static void main(String[] args) {
//判断一个数字是否是素数:除了1和它本身外没有其他数可以整除
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
boolean flag = true;//默认表示输入的是质数
//求开根号的方式 Math.sqrt()
int i = 0;
for (i = 2; i <= Math.sqrt(num); i++) {
if(num % 2 == 0) {
flag = false;
break;
}
}
if(flag && num > 1){//1不是质数也不是合数
System.out.println(num + "是素数");
}else{
System.out.println(num + "不是素数");
}
}
//方法2:
public static void main(String[] args) {
//输入一个数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = scanner.nextInt();
boolean flag = true;//默认表示该整数是质数
//判断
for(int i = 2;i < number;i++){
if(number % i == 0){
//说明不是质数
flag = false;
break;//不用执行后续代码,直接跳出循环
}
}
//需要单独判断1
if(flag && number > 1){
System.out.println(number + "是一个质数");
}else{
System.out.println(number + "不是一个质数");
}
}
2、输出乘法口诀表
public static void main(String[] args) {
//输出乘法口诀表
int i = 0;
for(i = 1;i <= 9;i++){
int j = 0;
for(j = 1;j <= i;j++){
System.out.print(j + "*" + i + "=" + i*j+" ");
}
System.out.println();
}
}
3、求两个正整数的最大公约数
public static void main(String[] args) {
//求两个正整数的最大公约数:辗转相除法
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();//18
int num2 = scan.nextInt();//24
int num3 = num1 % num2;//18
while(num3 != 0){
num1 = num2;//24 18
num2 = num3;//18 6
num3 = num1 % num2;//6 0
}
System.out.println(num2);
}
4、水仙花数
public static void main(String[] args) {
//求水仙花数
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = scan.nextInt();//153
int count = 0;//统计输入数的位数
int tmp = num;
//统计输入数字的总位数
while(tmp != 0){
tmp /= 10;
count++;
}
tmp = num;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp % 10,count);//pow(x,y)是x的y次方
tmp /= 10;
}
if(sum == num){
System.out.println(num + "是水仙花数");
}else{
System.out.println(num + "不是水仙花数");
}
}
5、求 3~6 位的水仙花数
public static void main(String[] args) {
//求水仙花数
int num = 0;
for(num = 100;num <= 999999;num++){
int count = 0;//统计输入数的位数
int tmp = num;
//统计输入数字的总位数
while(tmp != 0){
tmp /= 10;
count++;
}
tmp = num;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp % 10,count);//pow(x,y)是x的y次方
tmp /= 10;
}
if(sum == num){
System.out.print(num + " ");
}
}
}
//运行结果:
//153 370 371 407 1634 8208 9474 54748 92727 93084 548834
6、写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1
public static void main(String[] args) {
//返回参数二进制中1的个数
int num = 15;
int count = 0;//统计个数
for (int i = 0; i < 32; i++) {
if(((num >> i) & 1) == 1){
count++;
}
}
System.out.println(count);
}
但是上述代码需要根据输入的数据类型在更改,因为不同数据类型的大小不同,所以移动的位数也不用,下面方法可以适用所有情况
public static void main(String[] args) {
int num = 15;
int count = 0;
while(num != 0){
count++;
num = num & (num-1);
}
System.out.println(count);
}
7、编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
使用的是字符串
String
中的equals
函数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner((System.in));
int count = 3;
while(count != 0){
System.out.println("请输入密码,你还有"+count+"次机会");
String password = scan.nextLine();
if(password.equals("123456")){
System.out.println("登录成功");
break;
}else{
count--;
System.out.println("登录失败");
}
}
}
}
8、获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
//输入的是一个int类型的数值
//偶数位:
for (int i = 31; i >= 1; i-=2) {
System.out.print(((num >> i) & 1) + " ");
}
System.out.println();
//奇数位:
for (int i = 30; i >=0 ; i-=2) {
System.out.print(((num >> i) & 1) + " ");
}
}
}
9、平方根
需求:键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去 。
//分析:
//平方根 16的平方根4
// 4的平方根2
// 10
// 1 * 1 = 1 < 10
// 2 * 2 = 4 < 10
// 3 * 3 = 9 < 10
// 4 * 4 = 16 > 10
//推断:10的平方根是在3~4之间。
// 20
// 1 * 1 = 1 < 20
// 2 * 2 = 4 < 20
// 3 * 3 = 9 < 20
// 4 * 4 = 16 < 20
// 5 * 5 = 25 > 20
//推断:20的平方根是在4~5之间。
//在代码当中
//从1开始循环,拿着数字的平方跟原来的数字进行比较
//如果小于的,那么继续往后判断
//如果相等,那么当前数字就是平方根
//如果大于的,那么前一个数字就是平方跟的整数部分
//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
//2.从1开始循环判断
//开始:1 结束: number
for (int i = 1; i <= number; i++) {
//用i * i 再跟number进行比较
if(i * i == number){
System.out.println(i + "就是" + number + "的平方根");
//一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。
break;
}else if(i * i > number){
System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
break;
}
}
在java中求平方根的方式:Math.sqrt(double a)
;