首页 > 试题广场 >

返回小于 N 的质数个数

[编程题]返回小于 N 的质数个数
  • 热度指数:4576 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
请考虑性能

输入描述:
一个整数N


输出描述:
小于N的质数数量
示例1

输入

10

输出

4

说明

N=10,质数有 [2, 3, 5, 7]

备注:
0、1 不属于质数。
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=Integer.valueOf(sc.next());
        if(n<=1)
            System.out.println(0);
        else if(n==2)
            System.out.println(1);
        else{
            int ans=1;
            for(int i=3;i<=n;i+=2){
                if(isSu(i))
                    ans++;
            }
            System.out.println(ans);
        }
    }
    public static boolean isSu(int num){
        for(int i=2;i<=Math.sqrt(num);i++){
            if(num%i==0)
                return false;
        }
        return true;
    }
}

发表于 2019-06-03 19:41:53 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int n = scan.nextInt();
            if(n<2){
                System.out.println(0);
                continue;
            }
            boolean[] array = new boolean[n];
            int cnt=0;
            for(int i=2; i<n; i++){
                if(array[i]==false){
                    cnt++;
                    for(int j=2; j*i<n; j++){
                        array[j*i] = true;
                    }
                }
            }
            System.out.println(cnt);
        }
    }
}
发表于 2019-01-11 13:13:26 回复(0)