7.11-循环结构练习题(判断2-100之间有多少个素数,并输出所有素数)

7.11-循环结构练习题

一、判断2-100之间有多少个素数,并输出所有素数。

public class zy01 {
    
    
    public static void main(String[] args) {
    
    
        int s=0;
        for (int i = 2; i <=100 ; i++) {
    
    
            for (int j = 2; j <i ; j++) {
    
    
                 s = i%j;
                if (s==0){
    
    
                    break;
                }

                }
            if (s!=0){
    
    
                System.out.print(+i+" ");
            }

        }
    }
}

二、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,

  • 其各位数字立方和等于该数本身。
  • 例如:153是一个"水仙花数"
  • 因为153=1的三次方+5的三次方+3的三次方。
public class zy02 {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 100; i <1000 ; i++) {
    
    
            int a = i/100%10;
            int b = i/10%10;
            int c = i%10;
            if (i==a*a*a+b*b*b+c*c*c){
    
    
                System.out.print(+i+" ");
            }

        }
    }
}

三、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。

  • 例如5+55+555+5555+55555(此时共有5个数相加)。
public class zy03 {
    
    
    public static void main(String[] args) {
    
    
        System.out.print("输入1-9之间的一个数:");
        Scanner sc = new Scanner(System.in);
        double n=sc.nextInt();
        double k=n;

        double sum =n;
        for (int i = 1; i <=n-1 ; i++) {
    
    
             k = k+n*Math.pow(10,i);
            sum =sum+k;
        }
        System.out.println(+sum);
    }
}

四、将一个正整数分解质因数。例如:输入90,打印出90=233*5。

  • 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
  • (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  • (2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
  • (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public class zy04 {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int num=sc.nextInt();
        System.out.print(num+"=");
        int k=2;
        int g =2;
        int num1 = num;
        do{
    
    
            if(num%k==0){
    
    
                System.out.print(k+"*");
                num/=k;
            }else{
    
    
                k=k+1;
            }
        }while(num!=k);
        System.out.print(k+"\n");

        if(num1==k){
    
    
            num=num+1;
            System.out.print("num+1的值作为k的值重新计算:");
            System.out.print(+(num)+"=");
            do{
    
    

                if(num%g==0){
    
    
                    System.out.print(g+"*");
                    num/=g;
                }else{
    
    
                    g=g+1;
                }
            }while(num!=g);
            System.out.print(g);
        }
    }
}

五、一个数如果恰好等于它的因子之和,这个数就称为"完数"。

  • 例如6=1+2+3.编程找出1000以内的所有完数
public class zy05 {
    
    
    public static void main(String[] args) {
    
    

        for (int i = 1; i <1000 ; i++) {
    
    
            int k=0 ;
            for (int j = 1; j <i ; j++) {
    
    
                    if (i%j==0){
    
    
                        k = k+j;
                    }
              }
            if (i==k) {
    
    
                System.out.println(+i);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42005540/article/details/107313462