素数:只能被1和它本身整除
算法:首先1和2是素数,如果一个数能够被从2到它平方根之间某个数整除它就不是素数
Java 列出 2 - 100 之间的所有素数
TestPrime.java
public class TestPrime {
public static boolean isPrime(int num) {
for(int i = 2; i <= Math.sqrt(num); i++) {//程序默认2是素数,当j=2时,循环不执行
if(num % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
for(int j = 2; j <= 100; j++) {
if(TestPrime.isPrime(j)) {
System.out.println(j + " is a prime");
}
}
}
}
简单改进:
for(int i = 2; i <= Math.sqrt(num); i++)这里每次循环都要执行一次Math.sqrt(num),而这是一个固定值,
因此应该使用空间换时间,double t = Math.sqrt(num); for(int i = 2; i <= i; i++)这样执行。
正则表达式方法:
String str="^1?$|^(11+)\\1+$";
Pattern pattern=Pattern.compile(str);
StringBuffer sb = new StringBuffer();
for(int i=1;i<1000;i++){
sb.append("1");
String tt = sb.toString();
Matcher matcher=pattern.matcher(tt);
if(!matcher.matches()){
System.out.println(i);
}
}
这是对正则的一种很诡异的应用 不过很有意思 来判断一个数是不是包含除1以外的因子。
java中已经把\1改成\\1 在JS中用\1就可以
|
|