Я написал программу, которая находит наименьшее число, которое имеет каждое число от 1 до 20 как несколько. Мой код в C++ прекрасно работает и находит правильный ответ:Python застревает при компиляции
#include <iostream>
using namespace std;
int main(){
for(int i = 1; i < 300000000; i++){
int check = 1;
for(int j = 6; j <= 20; j++){
if(i % j == 0){
continue;
} else {
check = 0;
break;
}
}
if(check == 1){
cout << i << endl;
break;
}
}
}
Однако, та же программа в Python - который работает при нахождении наименьшего числа со всеми от 1 до 10, как кратные, но только если диапазон обыскиваемого меньше (он работает с 5000000) - просто не будет компилироваться. Я продолжаю вечно, и мне нужно закрыть окно терминала.
for i in range(1, 300000000):
check = 1
for j in range(6, 21):
if i % j == 0:
continue
else:
check = 0
break
if check == 1:
print i
break
Я использую Mac OS X Mavericks, если это уместно.
Редактировать: Я попытался переключиться на xrange, но это, к сожалению, не имеет значения.
Edit2: Я оставил его на заднем плане - на самом деле это заняло всего около 14 минут! Прошу прощения, я должен был сделать это в первую очередь.
какая версия python это? – shuttle87
Специально '' for'' lops. Они ужасно медленны. Используйте '' map'', * list comprehensions * или инструменты, такие как '' itertools'', чтобы получить значительно лучшую производительность. '' for'' следует использовать только для небольших итераций или когда это действительно единственный вариант. И '' xrange'' вместо '' range'', если вы находитесь в python 2.x, как указано ниже. – aruisdante
Я только что сделал скамью простого '' for i in xrange (300000000): z = i% 10'', и это заняло 20 секунд. Серьезно, ваша программа просто медленно, как написано. Это не так. – aruisdante