2021-07-25 Java经典例题(三)

 

5、题目:判断101-200之间有多少个素数,并输出所有素数。

 

package test;

public class Main {
    
    public static void main(String[] args) {
        int sum = 0;
        math mymath = new math();
        for(int i = 101; i <= 200; i ++)
        {
            if(mymath.sushu(i)) {
                sum ++;
                System.out.println(i);
            }
        }
        System.out.println(sum);
    }
    
}

class math
{
    public boolean sushu(int x )
    {
        if(x <= 2)
        {
            return true;
        }
        for(int i = 2; i < x/2; i ++)
        {
            if(x % i == 0)
            {
                return false;
            }
        }
        return true;
    }
}

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。

 

6、

打印出杨辉三角形(要求打印出10行如下图)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

…………

package test2;

public class test33 {
    public static void main(String[] args) {
        int[][] a = new int[10][10];
        for (int i = 0; i < 10; i++) {
            a[i][i] = 1;
            a[i][0] = 1;
        }
        for (int i = 2; i < 10; i++) {
            for (int j = 1; j < i; j++) {
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
            }
        }
        for (int i = 0; i < 10; i++) {
            for (int k = 0; k < 2 * (a.length - i) - 1; k++) {
                System.out.print(" ");
            }
            for (int j = 0; j <= i; j++) {
                System.out.print(a[i][j] + "   ");
            }
            System.out.println();
        }
    }
}

 程序分析:除了第一行和每行第一个元素之外,其余的每行的第x个元素都等于上一行的的第x-1个元素和第x个元素之和

需要注意的点:需要注意最后两个for循环是如何输出的,输出了几个

 

7、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花

数 ",因为153=1的三次方+5的三次方+3的三次方。

 

public class exp2{
public static void main(String args[]){ 
int i=0; math mymath = new math();
for(i=100;i<=999;i++) {
if(mymath.shuixianhua(i)==true) System.out.println(i); } }class math { public int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); }public boolean iszhishu(int x) { for(int i=2;i<=x/2;i++) if (x % 2==0 ) return false; return true; }public boolean shuixianhua(int x) { int i=0,j=0,k=0; i=x / 100; j=(x % 100) /10; ik=fx % 10; (x==i*i*i+j*j*j+k*k*k) return true; else return false; } }

 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位

 

 

8、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相

加有键盘控制。

import java.io.*;
public class Sumloop { public static void main(String[] args) throws IOException { int s=0; int n; int t=0; BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in)); String input = stadin.readLine(); fno=rInteger.parseInt(input);
(int i=1;i<=n;i++){ t=t*10+n; s=s+t; System.out.println(t); } System.out.println(s); } }

 程序分析:分开拆出每一个数