TestSix 二

小角落里亦有风景
//对素数的探索
/**
*一般的,嵌套两层循环,内层用来探测,外侧用来输出
*对于探测:
*素数:除1和它本身外,不会被其他数整除,以下方法,第二种高效
*1. 用小于 该数开方值 的数整除他,若不能整除(余数不等于0) ,-->素数
*2. 将素数筛选出去     高效
   * 定义一个bool类数组,将下标为奇数的定为true
   * 依次剔除素数的倍数
*3. 只是将判断转变为方法,然后调用
*/
//1.
public class TestSix03{
  public static void main(String[] args){
    int n=100;
    int j;
    for (int i=2;i<n;i++){//第一种
      for(j=2;j<=Math.sqrt(i);j++){
        if(i%j==0){
          break;
        }
      }
      if(j>Math.sqrt(i))
        System.out.print(" "+i);
    }
  }
}

//2.
public class TestSix02{
  public static void main(String[] args){
    int n=100;
    boolean[] prime=new boolean[n];
    for(int i=2;i<n;i++){
    prime[i]=true;
    }
    for(int i=2;i<Math.sqrt(n);i++){
      if(prime[i])
         for(int j=i+i;j<n;j+=i)
             prime[j]=false;
    }
    for(int i=2;i<100;i++)
       if(prime[i])
          System.out.print(" "+i);
  }
}
//3.
public class TestSix01{
  public static void main(String[] args){
    int n=100;
    for (int i=2;i<n;i++){//第一种
      if(isprime(i)){
         System.out.print(" "+i);
      }
    }
  }
  public static boolean isprime(int i){
    for(int j=2;j<=Math.sqrt(i);j++){
      if(i%j==0){
        return false;
      }
    }
  return true;
  }
}


思考:
最初只是写了第三种,然后对与第一种后面的

if(j>Math.sqrt(i))
System.out.print(" "+i);

没有想清楚,直接写成 System.out.print(i) 了,
对于第二种高效率的写法,若从3开始,将所有的偶数下标设置为false,应该更好!!

***作业好多,不玩了。


**** 清醒小刻 ****
*** 没错,我说的都是错的 ***

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,165评论 0 41
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,908评论 0 2
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,412评论 0 6
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • 她爱欧洲的灿烂文化,她爱美国的民主平等,她爱日本的认真严谨,她更爱祖国的壮丽河山,单单憎恨老家的沟沟坎坎。
    晚霞消失之时阅读 121评论 0 0