这是Java 中简单的练习题,通过练习去熟悉语法
输出一个数,判断它是否是素数
什么是素数?
质数又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。(也可定义为只有1与该数本身两个正因数的数)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int x = 0;
for (int i = 2; i < n; i++) {
if(n % i == 0) {
x = 1;
break;
}
}
if(x == 0) {
System.out.println(n + "是素数");
}
else {
System.out.println(n + "不是素数");
}
}
Scanner 是Java 中输入的类,Scanner类可以生成一个解析基本类型和字符串的文本扫描仪
我们可以通过 Scanner 类来获取从键盘中输入的数值
闰年的定义是能被 4 整除并且不能被 100 整除,或者是能被 400 整除的数
public static void main(String[] args) {
for (int i =1000; i <= 2000;i++) {
if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
System.out.println(i);
}
}
}
判断1 到 100 的数字中出现 9 的次数,99 是算 2 个
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
if(i % 10 == 9) {//判断个位的9
count++;
}
if(i/10 == 9) {
count++;//判断十位的9
}
}
System.out.println(count);
}
个位的是 % 10 是否余数是 9,十位是除的余数是否是 9求一个整数,在内存当中存储时,二进制1的个数
方法一:
暴力求解
public static void main1(String[] args) {
int n = 4;
int sum = 0;
for (int i = 0; i < 32; i++) {
if (((n >> i) & 1) != 0) {
sum++;
}
}
System.out.println(sum);
}
}
答案:1
逻辑与& 1,看判断条件是否为真,为真计数器+1
public static void main(String[] args) {
int n = 5;
int count = 0;
while(n != 0) {
if( (n & 1) != 0) {
count++;
}
n = n >>> 1;
}
System.out.println(count);
}
答案:2
无符号右移 >>> 是无论正负数,右移的是补0,利用无符号右移 >>> 的特性,用while进行循环判断方法三:
效率最高
public static void main(String[] args) {
int n = 7;
int count = 0;
while(n != 0) {
n = n & (n-1);
count++;
}
System.out.println(count);
}
结果:3

这要找规律,一除于的数是每次往上递增的,奇数的是加,偶数的是减
方法一:
public static void main2(String[] args) {
double sum = 0;
for (int i = 1; i <= 100; i++) {
if(i % 2 == 1) {
sum += 1.0 / i;
}
else {
sum -= 1.0 / i;
}
}
System.out.println(sum);
}
结果:0.688172179310195
方法二:
public static void main(String[] args) {
double sum = 0;
for (int i = 1; i <= 100; i++) {
sum += 1.0/i;
sum = -sum;
}
System.out.println(sum);
}
求出0~n之间的所有“水仙花数”并输出
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=13+53+3^3,则153是一个“水仙花数
public static void main(String[] args) {
for (int i = 1; i <= 999; i++) {
int x = i;
int sum = 0;
int count = 0;
while(x != 0) {
x /= 10;
count++;
}
x = i;
while(x != 0) {
sum += Math.pow(x%10,count);
x /= 10;
}
if(sum == i) {
System.out.println(i);
}
}
}
模10再除10,计算出 i 的位数
Math.pow 是Java 里用来求次方的输你要求什么数的次方求几次方所有位数加起来的次方之和 是否等于 i输出n*n的乘法口诀表,n由用户输入
import java.util.Scanner;
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 = 1; j <= i; j++) {
System.out.print(i + "*" + j + "="+ j*i + " ");
}
System.out.println();
}
}
}
Scanner ,类型是nextInt编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 3;
while (count != 0) {
System.out.println("请输入密码,共有" + count + "次机会");
String pd = scan.nextLine();
if(pd.equals("123")) {
System.out.println("登陆成功");
break;
}
else {
System.out.println("登陆失败");
}
count--;
}
}
equals变量名.equals获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列
public static void main(String[] args) {
int n = 7;
for (int i = 31; i >= 1; i -= 2) {
System.out.print( ((n >> i) & 1) + " ");
}
System.out.println();
for (int i = 30; i >= 0; i -= 2) {
System.out.print(((n >> i) & 1) + " ");
}
}
按位于 & 个 1 就可以得出二进制位上的数字i -= 2