java:构造n以内的素数

开启学习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 + " ");
        }
    }
}
发布了87 篇原创文章 · 获赞 43 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_31362767/article/details/104096779
今日推荐