java算法(一)

时间:2023-03-09 01:07:35
java算法(一)

最近在看各种经典算法,自己写起来:

一、判断素数问题:

知识点:素数即为质数,一个数n若不是质数则一定在2-n/2之间内有因数。

package JingDian;

public class sushu {
public static void main(String[] args){
myMath shu = new myMath();
for(int i=101;i<=200;i++){
if(shu.isSuShu(i)==true){
System.out.println(i);
}
}
}
} class myMath{
public boolean isSuShu(int x){
for(int i=2;i<=x/2;i++){
if(x%i==0)
return false;
}
return true;
}
}

二、取数的个位,十位,百位....问题:

知识点:

假设那么数为x,不知道是多少位的.

你可以使用下面的表达式:

个位:x%10

十位:x/10%10

百位:x/100%10

千位:x/1000%10

package JingDian;

public class shuixianshu {
public static void main(String[] args){
myMath2 shuixian = new myMath2();
for(int i=100;i<999;i++){
if(shuixian.shuixianshu(i)==true)
System.out.println(i);
}
}
} class myMath2{
public boolean shuixianshu(int x){
int i=0,j=0,k=0;
//获取一个数的个位十位百位
i=x/100%10;
j=x/10%10;
k=x%10;
if(x==i*i*i+j*j*j+k*k*k){
return true;
}else{
return false;
}
}
}

三、分解质因数问题:

package JingDian;

public class fenjieshu {
public fenjieshu(){}
public void fenjie(int n){
for(int i=2;i<=n/2;i++){
if(n%i==0){
System.out.println(i+"");
//递归调用
fenjie(n/i);
}
}
System.out.println(n);
System.exit(0);
} public static void main(String[] args){
String str="";
fenjieshu f=new fenjieshu();
str = javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):");
int N = 0;
try{
N = Integer.parseInt(str);
}catch(NumberFormatException e){
e.printStackTrace(); }
System.out.println(N+"分解质因数:"+N+"=");
f.fenjie(N);
}
}