python求n的倍数_求n以下所有数字的总和,这些数字是某些数字的倍数

这是一个关于如何使用Python找到小于给定数N的所有数字的总和,这些数字是某些特定数字(如3和5)的倍数。博客内容涉及编程挑战,给出了多种编程语言的实现示例,如Octave、JavaScript、MATLAB、Haskell和Python等,展示了如何解决这个问题。
摘要由CSDN通过智能技术生成

求n以下所有数字的总和,这些数字是某些数字的倍数

31

几乎等同于欧拉计划的第一个问题:

如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。

找出1000以下3或5的所有倍数的总和。

挑战:

给定一个正整数N和一组至少一个正整数的A,输出所有的正整数的总和小于N那些中的至少一个构件的倍数A。

例如,对于Project Euler情况,输入为:

1000

3

5

测试用例:

Input : 50, [2]

Output: 600

Input : 10, [3, 5]

Output: 23

Input : 28, [4, 2]

Output: 182

Input : 19, [7, 5]

Output: 51

Input : 50, [2, 3, 5]

Output: 857

4

1)我们是否计算两个数字的倍数?2)我们只能得到另外两个数字吗?或任何金额说一或三?

3

你能给出一些测试用例吗?显然不要将答案发布到PE上,但是其他示例呢?

1

@WheatWizard:单词“或”表示每个数字最多只能计数一次。我同意,这个问题需要弄清楚必须支持多少个“数字以检查参数的倍数”。就是两个?一个或多个?零或更多?

1

我们可以接受等于或低于10的数字,还是接受9而不是10?

“并且至少有一个正整数A的集合”该集合有多大?

Answers:

13

果冻,6个字节

ḍþṖḅTS

怎么运行的

ḍþṖḅTS Main link. Left argument: D (array). Right argument: n (integer)

ḍþ Divisible table; test each k in [1, ..., n] for divisibility by all

integers d in D.

Ṗ Pop; discard the last Boolean array, which corresponds to n.

ḅ Unbase; convert the Boolean arrays of base n to integer. This yields a

non-zero value (truthy) and and only if the corresponding integer k is

divisible by at least one d in D.

T Truth; yield the array of all indices of truthy elements.

S Compute their sum.

3

当然,@ Dennis必须附带一些使您想知道您在ppcg上正在做什么的东西

8

Python,59 55字节

lambdan,l:sum(v*any(v%m<1forminl)forvinrange(n))

带有整数n和整数列表的未命名函数l。遍历一个自然数(加零)的范围,但不包括n和求和(sum(...))那些用零(v%m<1)除以列表中any整数的余数。使用乘法而不是条件式来节省3个字节。ml

8

八度,38 36 33字节

@(x,y)(1:--x)*~all(mod(1:x,y),1)'

输入为:f(10, [3;5])。如果输入可以f(9,[3;5])用于相同的测试用例,则将短2个字节。

说明:

@(x,y) % Anonymous function that takes two inputs, x and y

% x is a scalar and y is a vertical vector with the set of numbers

(1:--x)* % Pre-decrement x and create a vector 1 2 ... x-1

八度可以预先减小,因此使用1:--x代替1:x-1(两次)可以节省两个字节。

mod(a,b)给出1 2 0 1 2 0 1 2 0的mod(1:9,3)。如果第二个参数是垂直向量,它将垂直复制第一个输入,并为第二个输入参数中的每个值取模。因此,对于输入,mod(1:9, [3;5])它给出:

1 2 0 1 2 0 1 2 0

1 2 3 4 0 1 2 3 4

以~all(_,1)在这给true了其中至少有一个值为零列,false其中所有的值不为零:

~all(mod(1:x,y),1)

0 0 1 0 1 1 0 0 1

在,1需要的情况下,存在只有一个号码y。否则,它将作用于整个向量,而不是作用于数字。

将其转换为垂直矩阵并使用矩阵乘法,将为我们提供正确的答案,而无需显式求和:

哦,这很残酷:由于x和x–1之间的差异,我不得不添加2个字节,但是您必须添加4个字节,我现在领先1个字节> :)

6

JavaScript(ES6),40 39 36字节

输入:具有整数n和整数数组,a具有柯林语法(n)(a)

n=>F=a=&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用一个循环来遍历1到n之间的所有自然数,判断是否是三或五的倍数,如果是就将其加入一个累加器中,最后返回累加器的值即可。 以下Python代码示例: ```python def sum_of_multiples(n): total = 0 for i in range(1, n+1): if i % 3 == 0 or i % 5 == 0: total += i return total ``` 你可以调用这个函数来计算任意正整数n以内中三或五的倍数的自然数之和,例如: ```python print(sum_of_multiples(10)) # 输出23 print(sum_of_multiples(100)) # 输出2318 print(sum_of_multiples(1000)) # 输出233168 ``` ### 回答2: 要计算任意正整数n以内中三或五的倍数的自然数之和,可以按照以下步骤编写Python代码: 1. 定义一个函数`calculate_sum(n)` 2. 初始化一个变量`total_sum`为0,用于存储和 3. 使用循环遍历范围从1到n - 如果当前数字能够被3或5整除(即是三或五的倍数),则将其加到`total_sum`中 4. 返回`total_sum` 以下是完整的Python代码实现: ```python def calculate_sum(n): total_sum = 0 for num in range(1, n+1): if num % 3 == 0 or num % 5 == 0: total_sum += num return total_sum ``` 使用该函数可以计算得出任意正整数n以内中三或五的倍数的自然数之和。例如,对于n=10,调用函数`calculate_sum(10)`,将返回结果23。 ### 回答3: 代码如下: ```python def sum_of_multiples(n): total_sum = 0 for num in range(1, n+1): if num % 3 == 0 or num % 5 == 0: total_sum += num return total_sum n = int(input("请输入一个整数n:")) result = sum_of_multiples(n) print("在", n, "以内,所有三或五的倍数的自然数之和为", result) ``` 这段代码定义了一个函数`sum_of_multiples`,接收一个整数n作为参数。在一个循环中,我们遍历从1到n的每个数,判断是否为三或五的倍数,如果是,则将其累加到总和中。最后返回总和。 通过用户输入一个整数n,并调用`sum_of_multiples`函数来计算n以内所有三或五的倍数的自然数之和,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值