使用C语言编写程序输入两个正整数m和k,其中1<m<100000,1<k<5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。 例如,输入:43833 3,满足条件,输出YES。如果输入:39331 3,尽管有3个3,但不能被19整除,也不满足条件,应输出NO。写出完整代码并给出解释
时间: 2023-03-07 21:19:49 浏览: 289
下面是使用C语言编写的程序:#include <stdio.h>
int main()
{
int m, k, count = 0;
scanf("%d %d", &m, &k);
if (m > 0 && m < 100000 && k > 0 && k < 5)
{
if (m % 19 == 0)
{
while (m > 0)
{
if (m % 10 == 3)
count++;
m /= 10;
}
if (count == k)
printf("YES");
else
printf("NO");
}
else
printf("NO");
}
return 0;
}解释:程序首先从输入中读入m和k两个正整数,并检查它们是否满足1<m<100000,1<k<5的条件。然后判断m是否能被19整除,如果可以,则用一个循环来检查m中有几个3,如果有k个3,则输出YES,否则输出NO。
相关问题
用C语言编写程序输入两个正整数M和N求其最大公因数和最小公倍数
好的,您可以使用以下程序来求得两个正整数M和N的最大公因数和最小公倍数:
```c
#include <stdio.h>
int main() {
int m, n, i, gcd, lcm;
printf("请输入两个正整数M和N:");
scanf("%d%d", &m, &n);
// 求最大公因数
for (i = 1; i <= m && i <= n; ++i) {
if (m % i == 0 && n % i == 0)
gcd = i;
}
// 求最小公倍数
lcm = m * n / gcd;
printf("最大公因数GCD是:%d\n", gcd);
printf("最小公倍数LCM是:%d\n", lcm);
return 0;
}
```
注意,程序中的求最大公因数的方法使用了辗转相除法,但是这里我们选择了更容易理解的枚举法。如果M和N很大,使用枚举法计算效率可能比较低,可以采用更高效的算法,例如辗转相除法或更高级的欧几里得算法。
使用c语言编程,编写程序,从键盘上输入两个正整数m和n(1<m<n),计算[m,n]区间内所有素数的和。
以下是用C语言编写的程序,可以实现输入两个正整数m和n(1<m<n),计算[m,n]区间内所有素数的和的功能:
```c
#include <stdio.h>
int isPrime(int num) { // 判断素数的函数
int i;
if (num <= 1) {
return 0;
}
for (i = 2; i < num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int m, n, i, sum = 0;
printf("请输入两个正整数m和n(1<m<n):");
scanf("%d %d", &m, &n);
for (i = m; i <= n; i++) {
if (isPrime(i)) {
sum += i;
}
}
printf("[%d,%d]区间内所有素数的和为:%d\n", m, n, sum);
return 0;
}
```
程序流程如下:
1. 首先定义一个函数 `isPrime`,用于判断一个数是否为素数。如果是素数,返回1;否则,返回0。
2. 在 `main` 函数中,首先定义变量 `m` 和 `n`,并从键盘上输入两个正整数。
3. 接着,用 `for` 循环遍历 [m,n] 区间内的所有整数,对于每个整数,调用 `isPrime` 函数判断是否为素数,如果是素数,累加到变量 `sum` 中。
4. 循环结束后,输出 [m,n] 区间内所有素数的和。
注意:本程序中,判断素数的算法是最基本的暴力算法,对于较大的数可能会比较耗时。如果需要处理更大的数据,可以使用更高效的素数判定算法。