1.统计在1~100之间所有素数的个数
public class PrimeNumber_1{
public static void main(String[]args)
{
int x;
int y=100;
boolean flag=false;
System.out.println("1~100之间的素数有:");
for(x=1;x<=y;x++,flag=false)
{
for(int i=2;i<=Math.sqrt(x);i++)
{
if(x%i==0)
{flag=true;break;};
}
if(flag==false)
{System.out.print("\t"+x);};

System.out.println();
}
}会输出素数,但不知怎么统计,希望大家给小妹指点指点

解决方案 »

  1.   

    1不是素数,加个统计就行了public class PrimeNumber_1{ 
    public static void main(String[]args) 

    int x; 
    int y=100;
    int count=0; 
    boolean flag=false; 
    System.out.println("1~100之间的素数有:"); 
    for(x=2;x <=y;x++,flag=false) 

    for(int i=2;i <=Math.sqrt(x);i++) 

    if(x%i==0) 
    {flag=true;break;}; 

    if(flag==false) 
    {
    count++;
    System.out.print("\t"+x);}; 

    System.out.println("\nThere are "+count+" PrimeNumbers from 1 to 100" ); 


      

  2.   


    public class PrimeNumber_1{
        public static void main(String[] args) {
            int x;
            int y = 100;
            boolean flag = false;
            System.out.println("1~100之间的素数有:");
            for (x = 1; x <= y; x++, flag = false) {//每次判断一个数后,都要把flag标志位重新置位
                for (int i = 2; i <= Math.sqrt(x); i++) {//判断一个数能否被从2开始,一直到小于它的平方根的整数整除
                    if (x % i == 0) {   //能够整除说明不是素数
                        flag = true;
                        break;
                    }             
                }
                if (flag == false) {
                    System.out.print("\t" + x);
                }
            }
        }
    }
      

  3.   


    public class PrimeNumber_1{
        public static void main(String[] args) {
            int x;
            int y = 100;
            int count = 0;
            boolean flag = false;
            System.out.println("1~100之间的素数有:");
            for (x = 2; x <= y; x++, flag = false) {//从2开始就可以, 每次判断一个数后,都要把flag标志位重新置位
                for (int i = 2; i <= Math.sqrt(x); i++) {// 判断一个数能否被从2开始,一直到小于它的平方根的整数整除
                    if (x % i == 0) { // 能够整除说明不是素数
                        flag = true;                    break;
                    }
                }
                if (flag == false) {
                    count++; // 素数加1
                    System.out.print("\t" + x);
                }
            }
            System.out.println();
            System.out.println("1~100之间的素数有" + count + "个");
        }
    }
      

  4.   

    5是除不到5的 
    因为你的条件是 
    i <= Math.sqrt(x)
      

  5.   

     for (int i = 2; i <= Math.sqrt(x); i++) {// 判断一个数能否被从2开始,一直到小于它的平方根的整数整除
      

  6.   

    因为你要求的是素数。根号x*根号x=x,那就是说如果一个因子>根号x的话,要是还能够相乘=x,那么必须另一个必须小于根号x,所以只需比较到根号x
    我来一个吧:带标记的continue语句
    outer:
    for(int i=1;i<MAX_VALUE;i++){
    int half = (int)Math.sqrt(i);
    for(int j=2;j<=half;j++){
    if(i%j==0)continue outer;
    }
    System.out.println(i);
    }