Как я могу посчитать числа в заданном диапазоне? - PullRequest
0 голосов
/ 29 марта 2019

Итак, я написал код, который перечисляет все числа, которые не делятся на 2 и 3. Теперь я хотел бы знать, сколько из этих чисел в ярости 1000. После небольшого поиска в Google я не нашел ничего, что можетПомоги мне с моим делом.

Не могли бы вы дать мне несколько советов?Был бы признателен!

for i in range(1, 1000):

    if i%2 != 0 and i%3 != 0:

        print(i)

Ответы [ 5 ]

2 голосов
/ 29 марта 2019

Диапазон уже определен, введите count

count = 0
for i in range(1, 1000):
    if i%2 != 0 and i%3 != 0:
        count += 1
        print("The number is {}".format(i))   
print("Count: {}".format(count))

ВЫХОД :

The number is 1
The number is 5
The number is 7
The number is 11
The number is 13
.
.
.
The number is 991
The number is 995
The number is 997
Count: 333

РЕДАКТИРОВАТЬ :

однострочник

print("Count: {}".format(sum(1 for i in range(1000) if i%2 != 0 and i%3 != 0)))
1 голос
/ 29 марта 2019

Есть 1000/2 = 500 чисел, делимых на 2, и 1000/3 = 333, делимых на 3. Среди них, кратные 6 появляются дважды, и их 1000/6 = 165.

Следовательно, 1000 - (500 + 333 - 166) = 333.

До миллиарда миллиардов у вас будет 1 000 000 000 000 000 000 - (500 000 000 000 000 000 - 333 333 333 333 333 333 - 166 666 666 666 666 666) = 333 333 333 333 333 333, что составляет лишь треть.

1 голос
/ 29 марта 2019
count=0

for i in range(1, 1000):

if i%2 != 0 and i%3 != 0:
    count=count+1
    print(i)

просто подсчитать внутри блока IF

0 голосов
/ 29 марта 2019
def number_of_not_divisible(a, b, myrange):
result = 0
least_common_multiple = a * b
while myrange % least_common_multiple != 0:
    if myrange % a != 0 and myrange % b != 0:
        result += 1
    myrange -= 1
partial_result_inside_one_range = 0
for i in range(least_common_multiple):
    if i % a != 0 and i % b != 0:
        partial_result_inside_one_range += 1

result += partial_result_inside_one_range * (myrange / least_common_multiple)
print(result)

number_of_not_divisible (2, 3, 1000)

Вы можете сделать это проще и проще.Вы можете видеть, что в каждом интервале с размером наименьшего общего кратного двух чисел количество искомых элементов одинаково.Таким образом, вам просто нужно посчитать в первом интервале и умножить его, а после простого подсчета числа в диапазоне% наименьшего общего кратного.Я думаю, что это должно работать вообще, но скажите мне, если вы ошиблись.

0 голосов
/ 29 марта 2019

Самое простое решение - поместить переменную count в цикл и увеличить ее.

count = 0
for i in range(1, 1000):
if i%2 != 0 and i%3 != 0:
    count+=1
    print(i)
print(count)

Другое решение может быть:

count = len([x for x in range(1,1000) if x%2!=0 and x%3!=0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...