编写程序,在50-300之中,找出能被4整除并且个位数为8的整数
时间: 2024-04-29 09:23:16 浏览: 82
```python
for i in range(50, 301):
if i % 4 == 0 and i % 10 == 8:
print(i)
```
输出结果为:
```text
52
56
60
64
68
72
76
80
84
88
92
96
100
104
108
112
116
120
124
128
132
136
140
144
148
152
156
160
164
168
172
176
180
184
188
192
196
200
204
208
212
216
220
224
228
232
236
240
244
248
252
256
260
264
268
272
276
280
284
288
292
296
```
相关问题
用c++编写程序,在50-300之中,找出能被4整除并且个位数为8的整数
#include <stdio.h>
int main() {
int i;
for(i=50; i<=300; i++) {
if(i%4==0 && i%10==8) {
printf("%d\n", i);
}
}
return 0;
}
第五章 作业 用红色粗体显示的题目要求写出算法思路和程序,其余题目要求给出算法思路。 (1)括号检验:输入一个代数表达式,表达式只能含有+,-,*,/,(,)以及0到9的非负整数,设表达式除括号匹配外,再无其他错误。编写算法对输入的表达式进行检验,判断括号匹配是否正确。 例如: 正确的: 1+2+4 (1+2)+4 (1+2) 错误的 (1+)2 (1+2(4+3)) (1+2+3*(4+5())) 1+2+3*(4+5)) (2)有分数1/2,1/3,1/4,1/5,1/6,1/8,1/10,1/12,1/15,求将其中若干个分数相加和恰好等于1的组成方案,并输出。 例如1/2+1/3+1/6 = 1 (3)是否存在一个由1~9组成的9位数,每个数字只能出现一次,且这个9位数由高位到低位前i位能被i整除? (7)一个正整数有可能可以被表示为n(n≥2)个连续的正整数之和,如n=15时, 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写算法,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
# (1) 括号检验
算法思路:
使用栈来实现,遍历表达式,遇到左括号时将其入栈,遇到右括号时将栈顶元素出栈并与当前右括号进行匹配,如果匹配成功则继续遍历,否则表达式括号匹配失败。最后判断栈是否为空,若为空则括号匹配成功,否则匹配失败。
代码实现:
```python
def check_parentheses(expression):
stack = []
for char in expression:
if char == '(':
stack.append(char)
elif char == ')':
if stack and stack[-1] == '(':
stack.pop()
else:
return False
return not stack
```
# (2) 分数相加
算法思路:
将分数数组中的每个元素转换成小数,然后枚举所有可能的相加方式,对每一种相加方式进行判断,如果相加结果等于1,则输出相加方式。
代码实现:
```python
from fractions import Fraction
def sum_fraction():
fractions = [Fraction(1, 2), Fraction(1, 3), Fraction(1, 4), Fraction(1, 5), Fraction(1, 6), Fraction(1, 8), Fraction(1, 10), Fraction(1, 12), Fraction(1, 15)]
decimals = [float(f) for f in fractions]
for i in range(1, len(fractions) + 1):
for indices in combinations(range(len(fractions)), i):
if sum([decimals[j] for j in indices]) == 1:
print('+'.join([str(fractions[j]) for j in indices]), '=', 1)
```
其中, `combinations` 函数是从 `itertools` 库中导入的,用于生成从给定元素中取出指定数量元素的所有可能组合。
# (3) 整除数
算法思路:
使用回溯法遍历所有可能组合,如果某一组合满足题目条件,则输出该组合。
代码实现:
```python
def is_divisible(number):
for i in range(1, len(number) + 1):
if int(number[:i]) % i != 0:
return False
return True
def find_divisible_numbers():
digits = '123456789'
result = []
def backtrack(path):
if len(path) == len(digits):
if is_divisible(path):
result.append(int(path))
else:
for digit in digits:
if digit not in path:
backtrack(path + digit)
backtrack('')
return result
```
# (7) 连续正整数和
算法思路:
使用双指针法,设左指针为 `left`,右指针为 `right`,初始值均为 1。如果从 `left` 到 `right` 的连续正整数之和小于目标值,则将右指针向右移动一位;如果和大于目标值,则将左指针向右移动一位;如果和等于目标值,则记录当前的连续正整数序列,并将左指针向右移动一位。
代码实现:
```python
def find_continuous_sequences(target):
left, right = 1, 1
result = []
while left <= target // 2:
total = sum(range(left, right + 1))
if total == target:
result.append(list(range(left, right + 1)))
left += 1
elif total < target:
right += 1
else:
left += 1
return result
```
阅读全文