问题描述 农夫约翰想从正整数A~B之间选一些质数来作为奶牛的编号 ,并且作为编号的数各位上的数字至少有一个特定的数字D。如A为10、B为15、D为3时,A~B之间有11、13两个素数,但组成11的两个数字中没有3,所以只有一个数13符合条件。 输入描述 一行三个正整数A、B、D,之间用一个空格隔开。 其中1<=A<=B<=4000000,B<=A+2000000,0<=D<=9 输出描述 一行一个正整数,表示包含数字D的质数个数 样例输入 10 15 3 样例输出 1用C语言怎么写
时间: 2023-12-03 22:47:27 浏览: 258
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool has_digit(int n, int digit) {
while (n > 0) {
if (n % 10 == digit) {
return true;
}
n /= 10;
}
return false;
}
int main() {
int A, B, D;
scanf("%d%d%d", &A, &B, &D);
int count = 0;
for (int n = A; n <= B; n++) {
if (is_prime(n) && has_digit(n, D)) {
count++;
}
}
printf("%d\n", count);
return 0;
}
```
首先定义了两个辅助函数 `is_prime` 和 `has_digit`,分别用于判断一个数是否为质数和是否包含指定的数字。
然后读入输入的三个数 A、B、D,并用循环遍历 A 到 B 之间的每个整数,对于每个整数,如果它是质数且包含数字 D,则计数器加一。
最后输出计数器的值即可。
阅读全文