Java против C (время выполнения) РЕДАКТИРОВАТЬ: Добавлен код [закрыто]

Я только что написал программу, которая находит все простые числа с верхней границей.

Алгоритм: сито Эратосфена.

Написал это как на C, так и на Java. Верхняя граница 666014.

По какой-то причине C дает результат более чем за 2,5 секунды, а Java - за полсекунды.

Подробности:

Массив в C имеет тип char

Массив в Java имеет тип логический

C IDE: CodeBlocks

Java IDE: IntellijIdea Community Edition

Код C:

#include <stdio.h>

int main() {

    int n = 666013;
    int i;
    int k;

    char a[n];

    for (i = 2; i <= n; i++)
        a[i] = 0;

    for (i = 2; i <= n; i++)
         if ( a[i] == 0 )
         {
            printf("%d\n", i);
            for (k = i + i; k <= n; k += i)
                 a[k] = 1;
         }

    return 0;

}

Java-код:

package primes;

public class Prime {

    public static void main(String[] args) {
        long starttime = System.nanoTime();
        final int MAXN = 666013;
        boolean a[] = new boolean[MAXN];

        for (int i = 2; i < a.length; i++)
            a[i] = true;

        for (int i = 2; i < a.length; i++)
            if (a[i])
            {
                System.out.println(i);
                System.out.printf("");
                for (int j = i + i; j < a.length; j += i) {
                    a[j] = false;
                }
            }

        System.out.println(System.nanoTime() - starttime);

    }
}

Последнее редактирование: используетсяSystem.nanoTime () Java дает 0,35 секунды

Алгоритм C не может быть быстрее. Почему Java здесь быстрее?

Ответы на вопрос(1)

Ваш ответ на вопрос