看到下面这种方法:
                  for (int i=1;i<10000;i++)
{
                int factors = 0;
                for (int j=1;j<(i+2)/2;j++)
{
                if((i%j)==0) factors++;

{               
                if(factors<2) System.out.print(i + "is prime");
请问还有没有别的方法可以推荐?
谢谢!

解决方案 »

  1.   

    //求部分质数
    public class Test {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    for (int i = 2; i < 1000; i++) {
    if(i%2!=0 && i%3!=0) {
    sb.append(i + " ");
    }
    }
    System.out.println(sb);
    }
    }
      

  2.   

    (i+2)/2 用sqrt(i)代替,减少循环次数
      

  3.   

    判断方法如下:
    public boolean isPrimeNumber(int num) { 
          for (int i = 2; i <= Math.sqrt(num); i++) { 
              if(num%i==0) 
              { 
                  return false; 
              } 
          } 
          return true; 
        } 
      

  4.   


    public class TestZiShu{
      public static void main(String[] args){

        for(int i=2;i<31;i++){
      boolean flag=true;
      for(int j=2;j<i;j++){
        if(i%j==0){
      flag=false;
      break;
    }
      }if(flag){
        System.out.println(i);
       }
    }
      }
    }
      

  5.   


    for(int i = 1 ; i <= 100 ; i ++){
      boolean flag = true;
      for(int j = 2; j < i ; j ++){
      if(i % j == 0){
      flag = false ;
      break;
      }
      }
      if(flag == true){
      System.out.println(i);
      }
    }
      

  6.   

    引用 2 楼 icesnows 的回复:
    (i+2)/2 用sqrt(i)代替,减少循环次数 
    这个提示较好!!!
      

  7.   

    public class TestZhishu{
    public static void main(String args[]){
    int j=0;
    int flag=0;
    for(int i=2;i<=100;i++){
    flag=1;
    for(j=2;j<=Math.sqrt(i);j++){
    if(i%j==0)
    {
    flag=0;
    break;
    }

    }
    if(flag==1){System.out.print(i+" ");}
    }
    }
    }
      

  8.   

    有意思, 一般用sqrt就可以了.
      

  9.   

    今天刚做了一个不知道如何判断效率
    for(int k=2;k<100;k++)
    {
    for(int n=2;n<=k;n++)
    if(k%n==0)
    {
    if(k==n)
    System.out.print(k+"|");
    else
    break;
    }
    }
    2---100的质数
    效率是时间复杂度加空间复杂度??
    有什么软件或办法算出算法效率??谢谢
    明天再来
      

  10.   

    忘了还有
    while(i<100)
    {
    if(i%j!=0)
    j++;
    else
    {
    if(i==j)
    System.out.print(i+"|");
    i++;
    j=2;
    }
    }
    是这个
      

  11.   

    public class Prime {
    public static boolean isPrime(int num){
            for(int i=2;i<num;i++){
                if((num%i)==0){
                    return false;
                }
            }
            return true;
        } public static void main(String[] args){
            System.out.println("3到1000之间所有的素数如下:");
            for(int i=3;i<=1000;i++){
             if(isPrime(i)){
                   System.out.print(i+" ");
             }
        }
    }
      

  12.   

    我一个初学者的自己的方法,最原始的for循环,可能不是最好的,但是是我自己按照质数的定义做出来的public class Zhishu { public static void main(String[] args) {
    int n;
    System.out.println("1到100的所有质数:"+"\n"+"1"+"\n"+"2");
    //质数的定义就是除了1和它本身都不能整除
                    for (n=2;n<=100;n++)
    {
    for (int i=2;i<n;i++)
    {
    if (n%i==0)
    {
    break;//最关键的地方
    }
    else
    {
    if (i==n-1)
    System.out.println(n);
    }
    }
    }
    }
    }
      

  13.   

    int n;
    System.out.println("1到100的所有质数:"+"\n"+"1"+"\n"+"2");
    for (n=2;n<=100;n++)
    {
    for (int i=2;i<n;i++)
    {
    if (n%i==0)
    {
    break;//最关键的地方
    }
    else
    {
    if (i==n-1)
    System.out.println(n);
    }
    }
    }
      

  14.   

    public class Sushu{
    public static void main(String[] args){
    int i=2;
    int j=2;
    for(i=2;i<=100;i++){
    for(j=2;j<=i;j++){
    if(i%j==0){
    break;//跳出内循环
    }
    }if(i==j){
    System.out.println(i+"是素数");
    }
    }
    }
    }