Java代码练习

1、
这里写图片描述

代码:

public class xixueguidigital_2 {

    public static void main(String[] args) {

        int a,b,c,d;
        int s[]=new int[4];
        boolean flag ;
        for(int i=1000;i<10000;i++){
        s[0]=i/1000;
        s[1]=i%1000/100;
        s[2]=i%100/10;
        s[3]=i%10;
        flag = false;
        /*有了这个就不会造成1260=21*60和1260=60*21两种输出了,
                    发现了1260,不会再继续查找abcd了*/
        if(s[2]==0&&s[3]==0){
            continue;
        }
        for(int j1=0;j1<s.length;j1++){
            a=s[j1];
            if(a!=0){
        for(int j2=0;j2<s.length;j2++){
        if(j2!=j1)  {
            b=s[j2];

        for(int j3=0;j3<s.length;j3++){
        if(j3!=j1&&j3!=j2)  
        {
            c=s[j3];
            if(c!=0)
            {
            for(int j4=0;j4<s.length;j4++){
            if(j4!=j1&&j4!=j2&&j4!=j3)  
             {
              d=s[j4];
              int sum=(a*10+b)*(c*10+d);    
              if(i==sum && flag == false)
                {
                flag = true;
                System.out.print(i+"=");
                System.out.println((a*10+b)+"*"+(c*10+d));
                    break;
                }

                    }
                   }

                 }
             }
       }
    }
   }
 }
 }

}

}
}

输出结果:
1260=21*60
1395=15*93
1435=41*35
1530=51*30
1827=87*21
2187=27*81
6880=86*80

2、用递归编程求斐波那契数列f(n),已知f1=1;f2=1,以后每项都是前两项的和。

import java.util.ArrayList;
import java.util.Scanner;

public class Fibonacci {
    public static void main(String args[]){

        Scanner s = new Scanner(System.in);
        System.out.println("请输入项数:");
        int n=s.nextInt();
        s.close();
        ArrayList<Integer> list=new ArrayList<>();
        for(int i=1;i<=n;i++){
            list.add(function(i));
        }
        System.out.println("斐波那契数列:");
        for(int i=0;i<n;i++){
             System.out.print(list.get(i)+" ");
        }
    }
    //递归
    public static int function(int n){
          if(n==1 || n==2)
              return 1;
          return function(n-1)+function(n-2);
    }
}

输出结果:

请输入项数:
9
斐波那契数列:
1 1 2 3 5 8 13 21 34

3、如何利用筛选法查找100以内的素数?

代码如下:

public class findsushu {
public static void main(String[] args) {
    int i,j;
    int a[]=new int[101];
    for (i = 1; i < 101; i++) {
        a[i]=1;//将整个数组初始化为1
    }
    for(i=2;i<101;i++){
        if(a[i]!=0)
        {

            for(j=i+i;j<101;){
                if(j%i==0){
                    a[j]=0;
//将所有2、3、5、7等等的倍数都标记为0(由于4和6是2的倍数已经被标记为0了,所以跳过);
                    j=j+i;

                }
            }

        }
    }
    for(i=2;i<101;i++){
        if(a[i]!=0)
        {
            System.out.print(i+" ");
            }
    }

}


}

输出结果为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

4、如何用开根号的方法求100以内的素数?

代码如下:

public class findsushu_1 {
public static void main(String[] args) {
    int i,j,k;
    for(i=1;i<101;i++){
        k=(int) Math.sqrt(i);
        for (j = 2; j <= k; j++) {
            if(i%j==0){
                break;
            }
        }
        if(j>k){
            System.out.print(i+" ");
        }
    }

}
}

输出结果为:
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值