练习题

目录

  1. 求"完数"。
  2. 求最大公约数和最小公倍数
  3. 求素数
  4. 水仙花数
  5. 猜一个0到1000的随机数字
  6. 猜一个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;
                }
            }
        }
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值