输入1个不小于100的正整数n,输入1到n上有多少个整数是3的倍数且个位数为5
时间: 2023-05-31 11:06:01 浏览: 73
算法一:
使用循环遍历1到n的所有整数,判断是否是3的倍数且个位数为5,如果是则计数器加1。
时间复杂度:O(n)
代码实现:
n = int(input())
count = 0
for i in range(1, n+1):
if i % 3 == 0 and i % 10 == 5:
count += 1
print(count)
算法二:
可以发现,1到n中3的倍数的个数为n//3,而且是连续的,因此只需要判断3的倍数中个位数是否为5即可。
时间复杂度:O(1)
代码实现:
n = int(input())
count = n // 3
if n % 3 == 2: # 如果n % 3余数为2,则需要再加1
count += 1
print(count)
相关问题
c语言 输入1个不小于100的正整数n,输出1到n上有多少个整数是3的倍数且各位数字为5
以下是用C语言编写的程序:
```c
#include <stdio.h>
int main()
{
int n, count = 0;
printf("请输入一个不小于100的正整数:");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
if (i % 3 == 0 && i % 10 == 5) // 判断是否是3的倍数且个位数为5
{
count++;
}
}
printf("1到%d上有%d个整数是3的倍数且各位数字为5。\n", n, count);
return 0;
}
```
程序首先通过`scanf()`函数获取用户输入的整数n。然后使用`for`循环遍历1到n的所有整数,对于每个整数,如果它同时满足是3的倍数且个位数为5,则将计数器`count`加1。最后,程序输出满足条件的整数个数。
需要注意的是,题目中要求输入的整数不小于100,因此程序中没有对输入的整数n进行范围验证。如果需要更加严格的输入验证,可以使用`if`语句判断输入的数值是否大于等于100。
分支结构。判断一个正整数n的个位数是否是3的倍数
好的,针对您的问题,可以使用分支结构编写以下代码来判断一个正整数n的个位数是否是3的倍数:
```python
n = int(input("请输入一个正整数:"))
if n % 10 == 0 or n % 10 == 3 or n % 10 == 6 or n % 10 == 9:
print("该正整数的个位数是3的倍数!")
else:
print("该正整数的个位数不是3的倍数!")
```
在这个代码中,我们首先通过input()函数获取用户输入的一个正整数n,然后使用if语句和逻辑运算符来判断n的个位数是否是3的倍数。如果是,我们就打印出“该正整数的个位数是3的倍数!”;否则,我们就打印出“该正整数的个位数不是3的倍数!”。