Java题集(由入门到精通)02

此系列文章收录大量Java经典代码题(也可以算是leetcode刷题指南),希望可以与大家一起努力学好Java。3、2、1,请看!

目录

1.判断某个数是否是素数

2.打印棋盘

3.输出n以内所有亲密数

1.判断某个数是否是素数

分析:素数只能被1和它本身整除。以36为例,2×18=36,判断36被2整除的同时相当于也判断了它能被18整除,依此类推,3×12=36,4×9=36, 6×6=36,36的两个因子相遇,由此可知选择区间[2, vn]内的整数分别作除数即可,这个区间比[2, n-1]优化了许多。

for循环语句

    public static void main(String[] args) throws Exception {
    System.out.println("请输入一个数");
    Scanner scn=new Scanner(System.in);
    int m=scn.nextInt();//输入一个数
    int i;
     for(i=2;i<=Math.sqrt(m);i++)//Math.sqrt(m)开根
     {
         if(m%i==0)
             break;
     }
     if(i>Math.sqrt(m)&&m!=1)//1不是素数
         System.out.println(m+"是素数");
     else{
         System.out.println(m+"不是素数");
     }
    }

方法

    public static void main(String[] args) throws Exception {
    System.out.println("请输入一个数");
    Scanner scn=new Scanner(System.in);
    int m=scn.nextInt();//输入一个数
     if(isPrime(m))//1不是素数
         System.out.println(m+"是素数");
     else{
         System.out.println(m+"不是素数");
     }
    }
    public static boolean isPrime(int m)
    {
        if(m==1)
        return false;
        for(int i=2;i<=Math.sqrt(m);i++)
     {
         if(m%i==0)
            return false;
     }
     return true;
    }

2.打印棋盘

打印一个n*n大小的棋盘用*表示落棋的位置,棋盘编号用0~9,a~z表示,如下图:


    public static void main(String[] args) throws Exception {
    Scanner scn=new Scanner(System.in);
    System.out.print("请输入棋盘大小");
    int n=scn.nextInt();//制作抬头
    System.out.print("\t");
    for(int i=0;i<n;i++)
    {
        if(i>=0&&i<=9)
        System.out.print(i+"\t");//0~9
        else{
            System.out.print((char)('a'+i-10)+"\t");//a~z
        }
    }//第一行
    System.out.println();
    //输出棋盘
    for(int i=0;i<n;i++)
    {
        if(i>=0&&i<=9)
        System.out.print(i+"\t");
        else{
            System.out.print((char)('a'+i-10)+"\t");
        }//列的排布
        for(int j=1;j<=n;j++)
            System.out.print("*\t");
        System.out.println();
    }
    

    }

3.输出n以内所有亲密数

如果自然数 M的所有因子(包括1但不包括自身)之和为N,而N的所有因子之和为M, 则称M与N是一对“亲密数”。例如:220的所有因子之和为1+2 +4 +5+10+11+20+22+44 +55 +110=284,而284的所有因子之和为1+2 +4 +71 +142 =220,因此220 与284是一对“亲密数”。
输出每对“亲密数”时,小数在前、大数在后,并去掉重复的数对。例如:220 与284是一对“亲密数”,而284 与220 也是一对“亲密数”,此时,只输出 220 与284 这对即可。代码如下:


    public static void main(String[] args) throws Exception {
    System.out.println("请输入一个数");
    Scanner scn=new Scanner(System.in);
    int n=scn.nextInt();//输入一个数
    int a=0,b=0,temp=0,k=0;
        for(a=1;a<n;a++)
        {
            b=1;
            for(int j=2;j<=Math.sqrt(a);j++)
            {
                if(a%j==0)
                    b=b+j+a/j;
            }
            if(a<b)
            {
                temp=1;
                for(int j=2;j<=Math.sqrt(b);j++)
                {
                    if(b%j==0)
                        temp=temp+j+b/j;
                }
            }
            if(a==temp)
            {
                System.out.println(+a+"和"+b+"是一对亲密数");
                k++;
            }
        }
        System.out.println("有"+k+"对亲密数");
    }

这篇文章到此结束,感谢各位的阅读和所提出的宝贵意见,大家也可以试着自己动手编写代码。如果觉得这篇文章写的还可以或者对您有帮助,麻烦点赞收藏加转发!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值