lucien315 2023-05-27 14:34 采纳率: 0%
浏览 175
已结题

关于#c语言#的问题:农夫约翰想从正整数AB之间选一些质数来作为奶牛的编号 ,并且作为编号的数各位上的数字至少有一个特定的数字D

农夫约翰想从正整数AB之间选一些质数来作为奶牛的编号 ,并且作为编号的数各位上的数字至少有一个特定的数字D。如A为10、B为15、D为3时,AB之间有11、13两个素数,但组成11的两个数字中没有3,所以只有一个数13符合条件。

输入描述
一行三个正整数A、B、D,之间用一个空格隔开。 其中1<=A<=B<=4000000,B<=A+2000000,0<=D<=9

输出描述
一行一个正整数,表示包含数字D的质数个数

样例输入
10 15 3
样例输出
1

  • 写回答

8条回答 默认 最新

  • threenewbee 2023-05-27 14:36
    关注
    获得2.55元问题酬金
    #include <stdio.h>
    
    int prime[2000001], D, sum = 0;  
    bool vis[4000001];
    
    int main() {  
        int A, B, cnt = 0;  
        int check(int);  
          
        scanf("%d%d%d", &A, &B, &D);  
          
        memset(vis, false, sizeof(vis));  
          
        for (int i = 2; i <= B; i++) {  
            if (!vis[i]) {  
                prime[cnt++] = i;  
                if (i >= A) sum = sum + check(i);  
            }  
            for (int j = 0; j < cnt && iprime[j] <= B; j++) {  
                vis[iprime[j]] = true;  
                if (i % prime[j] == 0) break;  
            }  
        }  
          
        printf("%d\n", sum);  
          
        return 0;  
    }
    
    int check(int x) {  
        while (x) {  
            if (x % 10 == D) return 1;  
            x /= 10;  
        }  
        return 0;  
    }
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 创建了问题 5月27日