您的位置:首页 > 编程语言 > Java开发

一个获取输入范围内所有质数与质数个数的java小算法

2016-06-01 00:00 246 查看
摘要: 暴力算法才是真爱,谁叫脑容量不够

Scanner sca = new Scanner(System.in);
int n = sca.nextInt();
long t1 = System.currentTimeMillis();
TreeSet<Integer> hehe = new TreeSet<Integer>();
hehe.add(2);
//只需要判断奇数是否是质数就可以了
for(int i=2;(2*i-1)<=n;i++){
//求平方根
int sq = (int) Math.sqrt(2*i-1);
//判断平方根是否大于2,否,则是处理3,5,7
if(sq <= 2){
for(int j=2;j<(2*i-1);j++){
if((2*i-1)%j == 0){
break;
}
//判断是否是素数,能除到比该值小一,且余数不为0,肯定是素数
if((2*i-1)%j != 0 && j == (2*i-1)-1){
hehe.add(2*i-1);
}
}
}else{
for(int k=2;k<=sq;k++){
if((2*i-1)%k == 0){
break;
}
//判断是否是素数,能除到该值平方根的绝对值,且余数不为0,肯定是素数
if((2*i-1)%k != 0 && k == sq){
hehe.add(2*i-1);
}
}
}
}

System.out.println("素数:"+hehe);
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
System.out.println(n+"以内共有"+hehe.size()+"个素数");

直接贴到main方法,运行,输入单个数字即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  素数 算法