黑马程序员技术交流社区

标题: 判断101-200之间有多少个素数,并输出所有素数。 [打印本页]

作者: 下一秒温存    时间: 2014-11-10 12:13
标题: 判断101-200之间有多少个素数,并输出所有素数。
   
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,   
则表明此数不是素数,反之是素数。   
public class exp2{
        public static void main(String args[]){
                int i=0;
                math mymath = new math();
                for(i=2;i<=200;i++)  //引用for循环进行遍历
                        if(mymath.iszhishu(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;
        }
}

作者: 焦旭宁1    时间: 2014-11-10 13:47
攒个!!!!
作者: 20140829    时间: 2014-11-10 13:58
本帖最后由 20140829 于 2014-11-10 13:59 编辑
  1. public class exp2 {
  2.         public static void main(String[] args) {
  3.                 for (int i = 2; i <= 200; i++) {
  4.                         int count = 0;//定义一个计数器
  5.                         for (int j = 1; j <= i; j++) {
  6.                                 if (i % j == 0) {//计算出i整除j的次数
  7.                                         count++;//每整除一次,计数器count增加一次
  8.                                 }
  9.                         }
  10.                         if (count == 2) {//当i只有两次被整除的时候,那么i就是素数
  11.                                 System.out.println(i + "是素数");
  12.                         }
  13.                 }

  14.         }

  15. }
复制代码

作者: 冥夜    时间: 2014-11-10 14:41
算法可以优化下,对于求X以内的素数其实除到√X就行了,然后其实一个数只要不能被小于其的所有素数整除那个数就是素数,所以可以设置一个数组保存素质,然后递归就好了,这样才是优化的算法。然后还有就是用筛法。。
作者: song395866365    时间: 2014-11-10 17:23
不错呦:lol




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