Как найти количество кратных чисел в питоне

I’m trying to write a code that lets me find the first few multiples of a number. This is one of my attempts:

def printMultiples(n, m):
for m in (n,m):
    print(n, end = ' ')

I figured out that, by putting for m in (n, m):, it would run through the loop for whatever number was m.

def printMultiples(n, m):
'takes n and m as integers and finds all first m multiples of n'
for m in (n,m):
    if n % 2 == 0:
        while n < 0:
            print(n)

After multiple searches, I was only able to find a sample code in java, so I tried to translate that into python, but I didn’t get any results. I have a feeling I should be using the range() function somewhere in this, but I have no idea where.

ivanleoncz's user avatar

ivanleoncz

8,7706 gold badges56 silver badges48 bronze badges

asked Jan 27, 2013 at 23:01

iKyriaki's user avatar

2

If you’re trying to find the first count multiples of m, something like this would work:

def multiples(m, count):
    for i in range(count):
        print(i*m)

Alternatively, you could do this with range:

def multiples(m, count):
    for i in range(0,count*m,m):
        print(i)

Note that both of these start the multiples at 0 — if you wanted to instead start at m, you’d need to offset it by that much:

range(m,(count+1)*m,m)

answered Jan 27, 2013 at 23:05

Amber's user avatar

AmberAmber

503k82 gold badges625 silver badges550 bronze badges

1

Does this do what you want?

print range(0, (m+1)*n, n)[1:]

For m=5, n=20

[20, 40, 60, 80, 100]

Or better yet,

>>> print range(n, (m+1)*n, n)
[20, 40, 60, 80, 100] 

For Python3+

>>> print(list(range(n, (m+1)*n, n)))
[20, 40, 60, 80, 100] 

answered Jan 27, 2013 at 23:04

sberry's user avatar

sberrysberry

127k18 gold badges136 silver badges165 bronze badges

4

Based on mathematical concepts, I understand that:

  • all natural numbers that, divided by n, having 0 as remainder, are all multiples of n

Therefore, the following calculation also applies as a solution (multiples between 1 and 100):

>>> multiples_5 = [n for n in range(1, 101) if n % 5 == 0]
>>> multiples_5
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]

For further reading:

  • https://www.mathsisfun.com/definitions/natural-number.html
  • https://www.mathwizz.com/arithmetic/help/help9.htm
  • https://www.calculatorsoup.com/calculators/math/multiples.php

answered Jan 23, 2019 at 16:43

ivanleoncz's user avatar

ivanleonczivanleoncz

8,7706 gold badges56 silver badges48 bronze badges

For the first ten multiples of 5, say

>>> [5*n for n in range(1,10+1)]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

answered Jan 27, 2013 at 23:18

Colonel Panic's user avatar

Colonel PanicColonel Panic

132k85 gold badges399 silver badges461 bronze badges

1

You can do:

def mul_table(n,i=1):
    print(n*i)
    if i !=10:
        mul_table(n,i+1)
mul_table(7)

double-beep's user avatar

double-beep

4,96617 gold badges32 silver badges41 bronze badges

answered May 29, 2019 at 14:13

deeksha's user avatar

If this is what you are looking for —

To find all the multiples between a given number and a limit

def find_multiples(integer, limit):
    return list(range(integer,limit+1, integer))

This should return —

Test.assert_equals(find_multiples(5, 25), [5, 10, 15, 20, 25])

answered Jul 26, 2020 at 8:31

era5tone's user avatar

era5toneera5tone

5514 silver badges14 bronze badges

Another method that can be done is trying to make a list. Here’s my example for getting the first 20 multiples of 7.

Input:

multiples_7 = [x * 7 for x in range(1,21)] 

print(multiples_7)

Output:

[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 140]

eyllanesc's user avatar

eyllanesc

233k19 gold badges161 silver badges234 bronze badges

answered Sep 24, 2021 at 5:07

Al M. Rodriguez's user avatar

def multiples(n,m,starting_from=1,increment_by=1):
    """
    # Where n is the number 10 and m is the number 2 from your example. 
    # In case you want to print the multiples starting from some other number other than 1 then you could use the starting_from parameter
    # In case you want to print every 2nd multiple or every 3rd multiple you could change the increment_by 
    """
    print [ n*x for x in range(starting_from,m+1,increment_by) ] 

answered Jan 18, 2017 at 15:59

Vikash Raja Samuel Selvin's user avatar

For first 10 multiples of 5 you can do as

import numpy as np
#np.arange(1,11) array from 1 to 10 
array_multipleof5 = [5*n for n in np.arange(1,11)]
array_multipleof5 = np.array(array_multipleof5)
print(array_multipleof5)

answered Aug 2, 2021 at 23:37

RevathyKDS's user avatar

How to calculate the first n multiples of a given number x, in the compact python’s lambda notation

n_multiples_of_x = lambda n,x : list( range(x, x*n + 1, x) )

Tests:

assert n_multiples_of_x(5, 5) == [5, 10, 15, 20, 25]

answered May 15, 2022 at 15:28

Francisco Bernardo's user avatar

Описание задачи

Данная программа должна вывести все числа в заданном диапазоне, которые делились бы без остатка на определенное число.

Решение задачи

  1. На вход принимаются два числа, которые задают диапазон и записываются в разные переменные.
  2. Также принимается число, которое будет делителем.
  3. Используем цикл for, чтобы пройтись по всему диапазону и проверить все числа на кратность. Выводим только те числа, которые делятся на заданное число без остатка.
  4. Конец.

Исходный код

Ниже дан исходный код для вывода всех чисел из заданного диапазона, которые удовлетворяют условию делимости на данное число. Результаты работы программы также даны ниже.

lower = int(input("Введите нижнюю границу диапазона:"))
upper = int(input("Введите верхнюю границу диапазона:"))
n = int(input("Введите делитель:"))
for i in range(lower, upper + 1):
    if(i % n == 0):
        print(i)

Объяснение работы программы

  1. Пользователь вводит два числа, нижнюю и верхнюю границы. Они записываются в отдельные переменные.
  2. Далее пользователь вводит число, которое будет делителем. Оно также сохраняется в своей переменной.
  3. Значение переменной цикла for варьируется от нижней до верхней границы с шагом 1.
  4. В процессе работы цикла проверяется, равен ли остаток от деления нулю. Если остаток равен нулю, делимое выводится на экран.
  5. Конец.

Результаты работы программы

Пример 1:
Введите нижнюю границу диапазона:1
Введите верхнюю границу диапазона:50
Введите делитель:5
5
10
15
20
25
30
35
40
45
50
 
Пример 2:
Введите нижнюю границу диапазона:50
Введите верхнюю границу диапазона:100
Введите делитель:7
56
63
70
77
84
91
98

Как можно найти все числа меньше 1000 кратные 3 и 5 с помощью кода на python

задан 5 ноя 2020 в 13:45

Умник Умник's user avatar

Умник УмникУмник Умник

111 золотой знак1 серебряный знак2 бронзовых знака

3

1 ответ

for x in range(15, 1000, 15):
    print(x)

ответ дан 5 ноя 2020 в 13:51

Просмотров 2.3к. Обновлено 15 октября 2021

В диапазоне натуральных чисел от 2 до 99 определить, сколько из них кратны любому из чисел в диапазоне от 2 до 9.

Необходимо проверить кратность каждого числа сначала числу 2, потом 3 и т.д. до 9 включительно. Введем массив с восьмью ячейками. В первую будем записывать количество чисел кратных 2, во вторую — 3 и т.д.

  1. Записать в ячейки массива нули.
  2. Перебирая числа от 2 до 99,
    1. для каждого из них в цикле от 2 до 9
      1. проверять кратность числа внешнего цикла числу внутреннего.
      2. Если второе число делит нацело первое, значит увеличивать на 1 значение в соответствующей ячейке массива.
  3. Вывести индексы и соответствующие им значения из массива.

Pascal

найти количество кратных чисел паскаль


var
a: array[2..9] of byte;
i,j: byte;
begin
for i:=2 to 9 do a[i] := 0;
for i:=2 to 99 do
for j:=2 to 9 do
if i mod j = 0 then
a[j] := a[j] + 1;
for i:=2 to 9 do
writeln(i,' - ', a[i]);
end



2 - 49
3 - 33
4 - 24
5 - 19
6 - 16
7 - 14
8 - 12
9 - 11

Язык Си


#include
main() {
int a[8], i, j;
for (i=0; i<9; i++) a[i] = 0;
for (i=2; i<100; i++)
for (j=2; j<10; j++)
if (i%j == 0) a[j-2] += 1;
for (i=0; i<8; i++)
printf("%d - %dn", i+2, a[i]);
}

Python

найти количество кратных чисел Python


a = [0]*8
for i in range(2,100):
for j in range(2,10):
if i%j == 0:
a[j-2] += 1
i = 0
while i < len(a):
print(i+2, ' - ', a[i])
i += 1



2 - 49
3 - 33
4 - 24
5 - 19
6 - 16
7 - 14
8 - 12
9 - 11

КуМир


алг кратность
нач
цел таб a[2:9]
цел j,i
нц для i от 2 до 9
a[i] := 0
кц
нц для j от 2 до 99
нц для i от 2 до 9
если mod(j,i) = 0 то a[i]:=a[i]+1 все
кц
кц
нц для i от 2 до 9
вывод i, " - ", a[i], нс
кц
кон

Basic-256


dim a(8)
for i=2 to 99
for j=2 to 9
if i%j = 0 then
a[j-2] = a[j-2] + 1
endif
next j
next i

for i=0 to 7
print (i+2) + " - " + a[i]
next i

#python #python-3.x

Вопрос:

 a=10,b=20,c=3
 

например,мне нужна программа,чтобы найти, сколько кратных у c=3, которые находятся между a, b или b, a?
как сделать эту программу без использования цикла? в этом примере с этим вводом программа должна выдать нам вывод 3, потому что кратные 3 равны 12,15,18, а эти числа находятся между 10,20, поэтому 3 будет правильным.

Комментарии:

1. Пожалуйста, покажите свои собственные усилия и что в этом плохого. Что значит «между»? Являются ли границы всеобъемлющими или исключительными?

2. Вероятно, это можно было бы сделать без циклов, если бы вы его жестко закодировали. Но почему? Для этого вам понадобится как минимум 1 или 2 петли

3. Ты действительно хочешь учиться?

Ответ №1:

Вы можете взять частное от обоих чисел, разделенное на c, а затем вычесть их, чтобы получить число, кратное между ними

 
a=100
b=200
c=3

multiple1 = a//c
multiple2 = b//c

print(multiple2-multiple1)

# this is not required, just for confirming that above logic works
count = 0
for i in range(a,b):
    if(i%c == 0):
        count =1
print(count)


 

оба результата равны 33

Комментарии:

1. при таком решении верхняя граница исключается, а нижняя граница включается

2. я пробовал, это хорошо работает для 10,20,3,но когда я попробовал a,b, c=10,20,5, вместо вывода 3 это дает 2

3. Но между 10 и 20 у нас есть только 15 и 20, верно? Вы также хотели бы включить 10. Может быть, это то, что прокомментировал @mozway

4. мне нравится этот ответ, он такой умный, поскольку основан на чистой математической логике, такой чертовски умный.

Ответ №2:

используйте range , начиная с ближайшего верхнего (или равного) делителя:

 import math
len(range(math.ceil(a/c)*c, b, c)) # if the upper bound is inclusive, use b 1
 

вывод: 3 для a=10;b=20;c=3

nb. вы также можете напрямую получить номер, используя (b-math.ceil(a/c)*c)//c 1 (включая обе границы)

ПРИМЕЧАНИЕ. если вы не хотите использовать math модуль: (b (-a//c)*c)//c 1

Ответ №3:

Я написал код ниже:

 def count_multiples(a, b, c):
    count = 1 if min(a, b)%c == 0 else 0
    count  = abs(a//c - b//c)
    return count

print(count_multiples(30, 15, 2))
 

При этом учитываются как нижняя, так и верхняя границы.

Я протестировал его для ограниченного числа тестов, но он должен работать для любой комбинации чисел. Вы можете попробовать это и дать мне знать, если это сработает.

Ответ №4:

Для этого вам понадобится пакет «numpy». Если вы еще не установили его, откройте свой терминал и запустите «conda install numpy» или «pip install numpy».

Код:

 Import numpy as np 

a=10
b=20
c=3

x=np.arange(a,b,1) #it will create a list with integers [10,11,...,18,19]
                   # if you want to include/exclude 10,20 do  /- 1

count_multiples = list(map(lambda y: y %c, x)).count(0)
                 
                # y %c, will give the modulo. The modulo will be 0, if the integer is a multiple of c
                # .count(0), will count how many modulos are zero
                # with lambda you create a function, in this case y %c
                # map can be used instead of a loop and will check every element  of the list 
 

Ответ №5:

 a,b,c=10,20,5

def countmultiples(a,b,c):
    start = a-a%c

    multiples = list(range(start,b 1,c))
    sumofmultiples = len(multiples)

    if multiples[0]%c!=0 or multiples[0]<a:
        sumofmultiples-=1
        multiples.pop(0)

    return multiples,sumofmultiples

print(countmultiples(a,b,c)
 

поэтому мне нужно было найти кратные между a и b, также включенные в оба. таким образом,он идеально работает для каждого числа без циклов, рекурсивных и встроенных функций.

Понравилась статья? Поделить с друзьями:
  • Как найти слепого парня
  • Желе лимонное мутное как исправить
  • Как найти предложение с союзной сочинительной связью
  • Как найти скрипт фильма
  • Найти как вызвать призрака