本文主要是介绍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~9else{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+"对亲密数");}
这篇文章到此结束,感谢各位的阅读和所提出的宝贵意见,大家也可以试着自己动手编写代码。如果觉得这篇文章写的还可以或者对您有帮助,麻烦点赞收藏加转发!!!
这篇关于Java题集(由入门到精通)02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!