Мне дали описание того, как мне реализовать генератор простых чисел, используя Java;но я не уверен, что делаю это правильно.Я надеялся, что кто-нибудь может дать мне несколько общих советов о том, как улучшить мою реализацию!Пожалуйста, не дайте мне ответа, так как это домашнее задание, и я бы хотел взломать это сам / стать лучшим программистом / не обманывать!
Я опубликую описание и свое решение ниже, в основном, я просто хотел бы знать некоторые общие вещи - правильно ли я следовал инструкциям (наиболее важно, поскольку я нахожу язык немного запутанным), и если бы я могсделать мою программу лучше (если так, то некоторые общие советы были бы хорошими, чтобы я мог понять, как ... я думаю, что мое использование логарифма далеко, но я не могу найти лучший способ использовать его)!
Извините, если это не разрешено - если нет, пожалуйста, игнорируйте или удалите!Большое спасибо за Вашу помощь!:)
Описание:
Prime (int initialCapacity): Конструктор класса.Цель конструктора - вычислить и сохранить первые числа initialCapacity, простые числа, firstCapacity, primefirst initialCapacity, число простых чисел i.Идея состоит в том, что вы вычисляете числа один раз и сохраняете их, чтобы вы могли использовать их несколько раз.Вы должны использовать ArrayList для хранения простых чисел.Алгоритм вычисления простых чисел представлен в следующем разделе.
Начните с пустого списка простых чисел.Вы можете представить этот список, используя ArrayList.
Хотя размер ArrayList не равен n, рассмотрите простое число следующего кандидата.Первоначально следующее простое число кандидата должно быть 2, но в противном случае оно должно быть преемником предыдущего простого числа кандидата.
Если простое число кандидата является простым, то добавьте его кlist.
Продолжите с шага 2.
Обратите внимание, что этот алгоритм предлагает использовать цикл while.Шаг 3 предыдущего алгоритма требует, чтобы вы знали, как решить, является ли данный простой кандидат, c> 1, простым числом.На самом деле, определение простых чисел уже предлагает наивный алгоритм.Например, вы можете использовать цикл while, чтобы проверить, что c% i 6 = 0 для всех натуральных чисел i, таких что 1
Мое решение заключается в следующем:
import java.util.*;
public class Prime {
public static void main( String[] args ){
}
public static void prime( int initialCapacity){
int index=2;
int logOfInitialCapacity = initialCapacity / (int)(Math.log(initialCapacity));
ArrayList<Integer> listOfPrimeNumbers = new ArrayList<Integer>(logOfInitialCapacity);
boolean[] isPrimeNumber = new boolean[initialCapacity + 1]; // boolean defaults to
// false
for (int i=0;i==initialCapacity;i++) {
isPrimeNumber[index] = true;
}
while ( index <= listOfPrimeNumbers.size() )
{
if (isPrimeNumber[index]) {
listOfPrimeNumbers.add(index);
}
for (int j = index; j * index <= initialCapacity; j++) {
isPrimeNumber[index * j] = false;
}
// Now mark the multiple of i as non-prime number
index++;
}
}
}
, который должен вычислить первую initialCapacity простых чисел и сохранить их в arrayList, как задает вопрос ... Я простоне уверен, что я сделал именно так, как говорит вопрос.Вероятно, это скорее результат учебы в течение всего дня и немного утомленный, чем что-либо еще!
Большое спасибо за помощь и за чтение всего этого;извините за длинный пост.