求100~200间的素数以及水仙花数

题目要求:

1、求100-200之间的素数。

程序清单:

ForWhile.java

2、拓展设计

(1)for语句和while语句是等价的,试用嵌套的for循环语句改写上述程序。(2)将程序的运行结果改为以每行5个数据的形式输出。

(3)如果去掉if(!f){continue;}语句,程序运行结果将如果?

(4)将程序中的while语句改用do…while语句实现。

(5)增加语句,统计运行结果中个位分别是1、3、7、9的素数的个数。

(6)打印出100—999之间所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153是“水仙花数”,因为153=13+53+33。



public class ForWhile{

public static void main(String[] args) {

   

    int j=100,k=200;

       

    while(j<=k)

    {

        int i=2;

        int n=(int) Math.sqrt(j);

        while(i<=n)

        {

            if(j%i==0)

            {

                break;

            }

            if(i>=n)

            {

                System.out.println(j+"是素数");

            }

            i++;

        }

        j++;

    }

}

}

拓展设计:

(1)for语句和while语句是等价的,试用嵌套的for循环语句改写上述程序。

Public class ForWhile{

public static void main(String[] args) {

        for(int j=100;j<200;j++){

            int n=(int) Math.sqrt(j);

            for(int i=2;i<=n;i++){

                if(j%i==0) {

                   break;

                }

                if(i>=n) {

                   System.out.print(j+"是素数");

                }

}

}

}

}

(2)    将程序的运行结果改为以每行5个数据的形式输出。

    public static void main(String[] args) {

       int k=0;

       for(int j=100;j<200;j++){

           int n=(int) Math.sqrt(j);

           for(int i=2;i<=n;i++)

           {

              if(j%i==0) {

                  break;

              }

              if(i>=n) {

                  System.out.print(j+"是素数  ");

                  k++;

                  if(k%5==0) {

                     System.out.println();

                  }

              }

           }

       }

    }


(3)    如果去掉if(!f){continue;}语句,程序运行结果将如果?


程序无法判断是不是为素数。

(4)    将程序中的while语句改用do…while语句实现。

public class ForWhile{

public static void main(String[] args) {

        int j=100,k=200,s=0;

        do{

            int i=2;

            int n=(int) Math.sqrt(j);

            do{

                if(j%i==0) {

                   break;

                }

                if(i>=n) {

                    System.out.print(j+"是素数  ");

                   s++;

                   if(s%5==0)

                       System.out.println();

                }

                i++;

            }while(i<=n);

            j++;

        }while(j<=k);

    }

}


(5)增加语句,统计运行结果中个位分别是1、3、7、9的素数的个数。

public class ForWhile{

public static void main(String[] args) {

    int[] a =  new int[10];

    int ss=0;

    int ge;

    for(int j=100;j<200;j++){

        int n=(int) Math.sqrt(j);

        for(int i=2;i<=n;i++)

        {

            if(j%i==0) {

                break;

            }

            if(i>=n) {

                System.out.print(j+"是素数  ");

                ss++;

                if(ss%5==0)

                   System.out.println();

                ge=j%10;

                a[ge]++;

            }

        }

    }

    System.out.println();

    for(int i=0;i<a.length;i++)

        if(a[i]!=0)

            System.out.println(i+"有"+a[i]+"个");

    }


}

 

(6)打印出100—999之间所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153是“水仙花数”,因为153=13+53+33

public class ForWhile{

    public static void main(String[] args) {

        int g,s,b;

        for(int i=100;i<1000;i++){

            g=i%10;

            s=i/10%10;

            b=i/100;

            int count=g*g*g+s*s*s+b*b*b;

            if(i==count)

                System.out.println(i+"是水仙花数");

        }

    }

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值