0
点赞
收藏
分享

微信扫一扫

CSS 笔记/练习

残北 2023-10-19 阅读 26

解题思路:本题没有多大难度,跟着题目思路走,很轻松就能过。

具体看代码注释,应该没有难懂的地方。

AC代码: 

#include <stdio.h>

int k,n,cnt;
int nut[12];
bool flag1,flag2;

bool isPrime(int num)
{
    if (num == 1)   return false;
    for (int i = 2; i*i <= num; i ++)
        if ( num%i == 0)
            return false;
    return true;
}

bool exam(int np)
{
    int s,t;
    cnt = s = 1;
    while ( np )       // 题目是逐个去掉最高位,这里是从个位数开始复原(逆过程),简单一点
    {
        t = np%10;
        if (t == 0)
            return false;
        nut[cnt] = t*s+nut[cnt-1];
        cnt ++;
        s *= 10, np /= 10;
    }
    return true;
}
int main()
{
    scanf("%d",&k);
    while ( k --)
    {
        scanf("%d",&n);
        //  先用两个判断解决掉绝大部分数字
        if ( n == 2 || n == 3 || n == 5 || n == 7)  {puts("Yes");continue;}
        if ( n%2==0 || n%3==0 || n%5==0 || n%7==0)  {puts("No");continue;}
        //  检查数字n中,是否含有0,同时把n逐个拆解
        flag1 = exam(n);
        if (flag1)
        {
            for (int i = 1; i < cnt; i ++)
            {
                // 检查 n及 其依次去掉高位的数 是否都是素数
                flag2 = isPrime(nut[i]);
                if (!flag2)
                    break;
            }
            if (flag2)  puts("Yes");
            else        puts("No");
        }
        else    puts("No");
    }
    return 0;
}
举报

相关推荐

CSS练习

css练习例子

CSS列表练习

css练习1

html与css练习

CSS练习题

CSS方块定位的练习

0 条评论