介绍:
判断一个数是否为素数,并输出多少以内的素数。
思路:
1.素数就是大于1的,并且只能被1和自己本身整除的数叫素数。
2.那么只需要从2循环到10就可以了。
上代码:
package 初级;
import java.util.Scanner;
public class 判断素数 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你要判断的数:");
int num = input.nextInt();
System.out.println(num+"是否为素数:"+judge(num));
System.out.println("请输入输出多少以内的素数:");
int len = input.nextInt();
for(int i=0;i<len;i++){
if(judge(i)){
System.out.print(i+",");
}
}
}
private static boolean judge(int n){
if(n<=3){
return n>1;
}
for(int i=2;i<10;i++){
if(n%i == 0 && n!=i){
return false;
}
}
return true;
}
}
可能有人会问?为什么从2-10,为啥不是从2-n呢?
因为:如果一个数能够被其他数整除的话,那么肯定是可以被2-10以内的数整除的。所以只需要判断能否被2-10之间的数整除就行了,不需要再一直循环到n.这样的话,这个算法的时间复杂度就是O(1),是常数级。
我也查了网上的求多少以内素数的算法,可是没看到和我一样的,我个人觉得自己的逻辑是对的,不知道哪里有错误。希望大家指教。提点一二。谢谢