开启学习java的新篇章,加油!
最近在着手学习java了,从基础语法开始,通过几天的学习,对比Python,差异很大,一开始还有点不适应;不过又让我想起了一些在大学时学C语言的感受,大体上说现在学java比没接触过编程时学C语言和学Python时速度更快。
算法:寻找 n 以内的素数:
package basic;
import java.util.Arrays;
public class basic_prime {
public static void main(String[] args) {
/*
构造100以内的素数:
1. 令x为2;
2. 将2x、3x、4x直至 ax, x<n 的数标记为非素数;
3. 令x 为下一个没有被标记为非素数的数,重复2,直至所有的数都尝试完毕;
*/
boolean[] isprime = new boolean[100];
// for (int i = 0; i < isprime.length; i++) {
// isprime[i] = true;
Arrays.fill(isprime, true);
for (int i = 2; i < isprime.length; i++) {
if (isprime[i]) {
for (int j = 2; i * j < isprime.length; j++) {
isprime[i * j] = false;
}
}
}
for (int i = 2; i < isprime.length; i++) {
if (isprime[i]) {
System.out.println(i + "");
}
}
}
}
普通方法:
package basic;
import java.util.Arrays;
public class basic_prime {
public static void main(String[] args) {
// 构造50以内的素数:
int[] primes = new int[50];
primes[0] = 2;
int count = 1;
MAIN_LOOP:
for (int i = 3; i < 50; i++) {
for (int j = 0; j < count; j++) {
if (i % primes[j] == 0) {
continue MAIN_LOOP;
}
}
primes[count++] = i;
}
for (int k : primes) {
if (k != 0)
System.out.println(k + " ");
}
}
}