黑马程序员技术交流社区

标题: 一道关于循环的小题,看谁能做出来! [打印本页]

作者: 黑马-张超    时间: 2013-4-23 23:07
标题: 一道关于循环的小题,看谁能做出来!
判断101-300之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
作者: 钟佩桓    时间: 2013-4-23 23:31
  1. /*
  2. 判断101-300之间有多少个素数,并输出所有素数。
  3. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
  4. */

  5. class  Getprime
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 int count = 0;
  10.                 System.out.println("101到300之间的素数为:");
  11.                 for(int x=102; x<=300; x++)
  12.                 {                       
  13.                         if(x%2==0)
  14.                                 System.out.print(x+",");
  15.                                 count++;
  16.                 }
  17.                 System.out.println("101到300之间的素数为"+count);

  18.                 /*
  19.                 计数器思想。
  20.                 通过一个变量记录住数据的状态变化。
  21.                 也许通过循环完成。

  22.                 */
  23.         }
  24. }
复制代码

作者: Lobon    时间: 2013-4-23 23:39
素数————定义有错误?
作者: 张洪慊    时间: 2013-4-24 00:12
本帖最后由 张洪慊 于 2013-4-24 00:20 编辑

/*
勾起了我对C的回忆 - -
*/
  1. /*
  2. 判断101-300之间有多少个素数,并输出所有素数。
  3. 思想:
  4. 1.利用for循环逐个判断
  5. 2.一旦该数能整除其中(2~根号n)一个数,break;
  6. 3.在跳出的循环外面加上判断是否是素数的条件
  7. */
  8. class PrimeDemo{
  9.   public static void main(String[] args){
  10.    int sum=0;
  11.    for(int number=101;number<=300;number+=2){//这里跳过偶数,肯定不是
  12.       
  13.          int value=(int)Math.sqrt((double)number);//这里用到了Math类中的sqrt方法
  14.          int i;
  15.          for(i=2;i<=value;++i){
  16.         if(number%i==0)//一旦整除,说明不是素数,立马结束该循环
  17.               break;
  18.          }
  19.         if(i>value){//说明为素数
  20.           System.out.print(number+"\t");//输出下该素数
  21.           ++sum;
  22.         }
  23.    }
  24.   System.out.println("\n素数个数: "+sum);
  25.   }

  26. }
复制代码

作者: 黑马-张超    时间: 2013-4-24 16:21
Lobon 发表于 2013-4-23 23:39
素数————定义有错误?

没有。你仔细看看就明白了1
作者: 薛淑凯    时间: 2013-4-24 17:01
钟佩桓 发表于 2013-4-23 23:31

这段代码能行吗?
作者: 钟佩桓    时间: 2013-4-24 17:30
薛淑凯 发表于 2013-4-24 17:01
这段代码能行吗?

我运行了是可以的
作者: HM刘博    时间: 2013-4-24 17:38
  1. public class Sushu {
  2.         /**
  3.          * 题目:判断101-300之间有多少个素数,并输出所有素数。
  4.                 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
  5.                 如果能被整除, 则表明此数不是素数,反之是素数。   
  6.          */
  7.         public static void main(String[] args) {
  8.                 int count = 0;//将次数初始化
  9.                 for(int i=101;i<300;i+=2){//对101~300逐个判断,去除偶数,因为偶数肯定不是素数
  10.                         boolean bool = false;//定义一个布尔类型的值并初始化
  11.                         for(int j=2;j<=Math.sqrt(i);j++){//除数是从2到被除数的平方根
  12.                                 if(i%j==0){
  13.                                         bool = false;//如果能整除,则说明不是素数,跳出循环
  14.                                         break;
  15.                                 }else{
  16.                                          bool = true;//不能被整除将bool设为真
  17.                                  }
  18.                         }
  19.                         if(bool){//如果bool为真,计数器加1,并将素数打印出来
  20.                                 count++;
  21.                                 System.out.println("素数是"+i);
  22.                         }                       
  23.                 }
  24.                 System.out.println("素数的总个数是:"+count);//打印素数的总个数

  25.         }

  26. }
复制代码

作者: 黄玉昆    时间: 2013-4-24 19:17
如果问题解决了,请将问题分类改为“已解决”,谢谢
作者: 刘学明       时间: 2013-4-24 23:06
  1. /*
  2. 判断101-300之间有多少个素数,并输出所有素数。
  3. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),
  4. 如果能被整除,则表明此数不是素数,反之是素数.

  5. */
  6. class  SuShu
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 int count = 0;
  11.                 for(int x = 101;x<300;x+=2)//
  12.                 {
  13.                         boolean flag = false;
  14.                         for(int y= 2;y<Math.sqrt(x);y++)
  15.                         {
  16.                                 if(x%y==0)
  17.                                 {
  18.                                         flag = false;
  19.                                         break;
  20.                                 }
  21.                                 else
  22.                                 {
  23.                                         flag = true;
  24.                                 }
  25.                        
  26.                                
  27.                         }
  28.                         if(flag)
  29.                         {
  30.                                 count++;
  31.                                 System.out.print(x);
  32.                         }
  33.                         System.out.print(" ");
  34.                        
  35.                 }
  36.                 System.out.println("素数的个数"+count);

  37.         }
  38. }
复制代码

作者: Lobon    时间: 2013-4-25 23:38
刘学明    发表于 2013-4-24 23:06

11x11  13x13 17x17 怎么搞啊!
作者: Lobon    时间: 2013-4-25 23:41
挖槽,我的最简单
class  shushu
{
        public static void main(String[] args)
        {
                int count = 0;
                System.out.println("101到300之间的素数为:");
                for(int x=101; x<=300; x++)
                {                        
                                        if(x%2!=0&&x%3!=0&&x%5!=0&&x%7!=0&&x%11!=0&&x%13!=0&&x%17!=0)
                                        {
                                                System.out.print(x+",");
                                                count++;
                                        }
                }
                System.out.println("\n101到300之间素数个数为:"+count);

                /*
                计数器思想。
                通过一个变量记录住数据的状态变化。
                也许通过循环完成。

                */
        }
}
作者: 袁梦希    时间: 2013-4-26 09:24
版主代理郑重提示:如果楼主问题已经解决那么。在自己发表的帖子下面,点“修改”,
然后把主题的分类标记成“已解决”。就OK了{:soso_e102:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2