目录
- 求"完数"。
- 求最大公约数和最小公倍数
- 求素数
- 水仙花数
- 猜一个0到1000的随机数字
- 猜一个0到100的随机数字
1.求"完数"。6=1+2+3;
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,它有约数1、2、3、6,除去它本身6外,把其余3个数相加,1+2+3=6。第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。
public static void main(String[] args) {
for(int i=1;i<10000;i++){
if(is(i))System.out.println(i);
}
}
public static boolean is(int sum){
int a=0;
final int b=sum/2;
for(int i=1;i<=b;i++){
if(sum%i==0)a+=i;
}
return a==sum;
}
2. 求最大公约数和最小公倍数
最大公约数,指某几个整数共有因子中最大的一个。
最小公倍数,几个数公有的倍数叫做这几个数的公倍数,其中最小的一个叫做这几个数的最小公倍数。
public static void main(String[] args) {
final int a=12,b=8;
System.out.println("最大公约数"+maxyueshu(a,b));
//我竟然现在才知道最小公倍数=a*b/最大公约数
System.out.println("最小公倍数"+a*b/maxyueshu(a,b));
}
public static int maxyueshu(int a,int b){
if(a<b){
int t=a;a=b;b=t;
}
int r;
while(b!=0){
r=a%b;
a=b;
b=r;
}
return a;
}
3.求素数
素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
public static void main(String[] args) {
int min=0,max=100;//求[0,100)的质数
for(int i=min;i<max;i++){
if(i==2)
System.out.println(i+"是质数");
else
for(int j=2;j<i;j++){
if(i%j==0){
// System.out.println(i+"不是质数");
break;
}
if(j>=i/2.0){
System.out.println(i+"是质数");
break;
}
}
}
}
4.水仙花数
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
for(int i=100;i<1000;i++){
int a=i/100;
int b=i/10;b%=10;
int c=i%100%10;
if(a*a*a+b*b*b+c*c*c==i)
System.out.println(i);
}
5.猜一个0到1000的随机数字
不限次数,猜一个0到100的随机数字。
public class TestStudent {
public static void main(String[] args) {
Random money = new Random();
int a = money.nextInt(101);
System.out.println("游戏开始,请输入一个数:");
Scanner money1 = new Scanner(System.in);
int c = money1.nextInt();
while (1==1) {
if (a < c) {
System.out.println("输入值偏大,游戏继续:");
c = money1.nextInt();
} else if (a > c) {
System.out.println("输入值偏小,游戏继续:");
c = money1.nextInt();
} else {
System.out.println("输入值相等,游戏胜利!!!");
System.out.println("随机数是:" + a);
break;
}
}
}
}
6.猜一个0到100的随机数字
利用十次机会,猜一个0到100的随机数字。
public class TestStudent {
public static void main(String[] args) {
Random money = new Random();
int a = money.nextInt(101);
System.out.println("游戏开始,请输入一个数:");
Scanner money1 = new Scanner(System.in);
int c = money1.nextInt();
for (int i = 0; i < 10; i++) {
if (a < c) {
System.out.println("输入值偏大,游戏继续:");
c = money1.nextInt();
} else if (a > c) {
System.out.println("输入值偏小,游戏继续:");
c = money1.nextInt();
} else {
System.out.println("输入值相等,游戏胜利!!!");
System.out.println("随机数是:" + a);
break;
}
}
}
}
}