Если вы хотите, чтобы ваш компьютер отслеживал более 300 000 000 элементов последовательности, если каждый из них состоит из 4 байтов, вам потребуется не менее 300 000 000 * 4 байта или более 1,1 ГБ пространства для хранения всех значений , Я предполагаю, что генерация последовательности также займет очень много времени, поэтому генерация всей последовательности снова каждый раз, когда пользователь хочет получить значение, также не является оптимальным. Я немного смущен тем, как вы пытаетесь приблизиться к этому точно.
Чтобы получить значение от пользователя прост: вы можете использовать val = input("What is your value? ")
где val
является переменной вы храните его в
EDIT:.
Похоже, быстрый и простой подход был бы таким образом, , с разумным количеством шагов для каждого значения (если значение не является простым ... но позволяет сохранить концепцию простой на данный момент): вам понадобится целое число, меньшее или равное квадратному корню из n (start_int = n ** .5
), и оттуда вы проверите каждое целое число ниже, чтобы увидеть, делит ли он n, сначала преобразуя start_int
в целое число с start_int = int(start_int)
(которое дает вам слово start_int) , вот так: while (n % start_int) != 0: start_int = start_int - 1
, декремент на единицу, а затем установить b = start_int
. Что-то похожее на поиск d
, но вы должны будете понять, что часть. Обратите внимание, что %
является оператором модуля (если вы не знаете, что это такое, вы можете прочитать его, google: 'modulus python') и **
- это возведение в степень. Затем вы можете вернуть значение с помощью инструкции return
. Ваша функция будет выглядеть примерно так (строки, начинающиеся с #
являются комментариями и питон скачет над ними):
def find_number(value):
#using value instead of n
start_int = value ** .5
start_int = int(start_int)
while (n % start_int) != 0:
#same thing as start_int = start_int - 1
start_int -= 1
b = start_int
#...more code here
semiperimeter = b + d
return semiperimeter
#Let's use this function now!
#store
my_val = input("Enter a value: ")
my_number = find_number(my_val)
print my_number
Есть много вводных руководств в Python, и я хотел бы предложить вам пройти через один первый, прежде чем приступать реализации проблемы как это. Если вы уже знаете, как программировать на другом языке, вы можете просто просмотреть руководство по синтаксису Python.
Не забудьте выбрать этот ответ, если это поможет!
Это хорошая точка о хранении всех тех ценностей, которые были бы очень много места.Теперь мой вопрос будет следующим: как программа может вернуть число на основе указанной переменной без создания сгенерированной последовательности? Мне понадобится структура, как, например, генерировать последовательность. – 23534260402
Кроме того, вот часть согласно oeis.org, которая объясняет эту функцию: «Полупериметр b + d, d> = b, квадратного прямоугольника с квадратом (наименьший db) с областью bd = n. То есть b = наибольший делитель n <= sqrt (n), d = наименьший делитель n> = sqrt (n). " Итак, как эта функция может вернуть указанное число, соответствующее значению неподготовленной последовательности? – 23534260402
Кажется, что элементы последовательности могут быть рассчитаны без ссылки на предыдущие элементы последовательности. См. Мой ответ выше. –