此系列文章收录大量Java经典代码题(也可以算是leetcode刷题指南),希望可以与大家一起努力学好Java。3、2、1,请看!
目录
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+"对亲密数");
}
这篇文章到此结束,感谢各位的阅读和所提出的宝贵意见,大家也可以试着自己动手编写代码。如果觉得这篇文章写的还可以或者对您有帮助,麻烦点赞收藏加转发!!!