A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   
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;
        }
}

4 个回复

正序浏览
不错呦:lol
回复 使用道具 举报
算法可以优化下,对于求X以内的素数其实除到√X就行了,然后其实一个数只要不能被小于其的所有素数整除那个数就是素数,所以可以设置一个数组保存素质,然后递归就好了,这样才是优化的算法。然后还有就是用筛法。。
回复 使用道具 举报
本帖最后由 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. }
复制代码
回复 使用道具 举报
攒个!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马