小W的算法之路(3)-----能整除1-20的数的最佳解决办法
public static int smallestMultiple(int num ) {
int product = num * (num - 1);
int m = 0;
// 这个循环的意义就是制造死循环
for (int i = 1; i < Integer.MAX_VALUE; i++) {
m = product * i;
//
for (int j = 2; j <= num; j++) {
if (m % j != 0) {
break;
}
if (j == num)
return m;
}
}
return num;
}
public static void main(String[] args) {
System.out.println(smallestMultiple(20));
}
小W的算法之路(4)-----第10,001个素数是多少?
问题分析:
输出第10,001个素数是多少?。
代码思想:
就是判断是否是素数,然后个数一个个相加,直到等于10001时为止。
// 下面的方法是判断是否为素数,2是唯一是偶数的素数,除了2如果为偶数直接返回false,
// 除了2任何素数都不能被偶数整除,所以下面循环的时候是从3开始,每次加2。
代码实现:
public static boolean sushu(int x) {
if (x < 2) {
return false;
}
if (x == 2) {
return true;
}
//0 & 1=0
//1 & 1=1
if ((x & 1) == 0)
return false;
final int max = (int) Math.sqrt(x);
//循环的次数,也是找10001个素数,
for (int i = 3; i <= max; i += 2) {
if (x % i == 0) {
return false;
}
}
return true;
}
public static int num_sushu(int num){
int i=0;
for (int j = 2; j < Integer.MAX_VALUE; j++) {
if (sushu(j)){
i++;
if (i==num)
return j;
}
}
return -1;
}
public static void main(String[] args) {
System.out.println(num_sushu(6));
}