1、求一个整数,在内存当中存储时,二进制1的个数。
注意:m=m&(m-1),直到m变为0。与运算多少次,就有多少个1。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int m=input.nextInt();
System.out.println("二进制中1的个数为:"+count(m));
}
public static int count(int m){
int count=0;
while(m!=0){
m=m&(m-1);
count++;
}
return count;
}
}
2、求两个正整数的最大公约数和最小公倍数
注意:有两个数m和n,最小公倍数=(m*n)/最大公约数
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入两个整数:");
int m=input.nextInt();
int n=input.nextInt();
int A=m,B=n;
if(n>m){ //使用异或交换m和n的值
m=m^n;
n=m^n;
m=m^n;
}
while(m%n!=0){
int k=m%n;
m=n;
n=k;
}
System.out.println("最大公约数为:"+n);
System.out.println("最小公倍数为:"+A*B/n);
}
}
3、计算1/1-1/2+1/3-1/4+1/5 …+ 1/99 - 1/100 的值 。
注意:sum为浮点数。
public class Test {
public static void main(String[] args) {
int flag=1;
double sum=0;
for(int i=1;i<=100;i++){
sum+=1.0/i*flag;
flag*=-1;
}
System.out.println(sum);
}
}
4、求出100~999之间的所有“水仙花数”并输出。
(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数“。)
注意:使用pow函数时应导入import java.lang.Math;
import java.lang.Math;
public class Test {
public static void main(String[] args) {
for(int i=100;i<1000;i++){
double ge=i%10;
double shi=i/10%10;
double bai=i/100;
if(i==Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3)){
System.out.println(i);
}
}
}
}
5、完成猜数字游戏(1~100)
注意:使用(int)(Math.random()*100+1)产生1~100的 随机数。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int key=(int)(Math.random()*100+1);
while(true){
System.out.println("请输入一个数字:");
int guess=input.nextInt();
if(key<guess){
System.out.println("猜大了");
}
else if(key>guess){
System.out.println("猜小了");
}
else{
System.out.println("恭喜你,猜对了");
break;
}
}
}
}