首页 > 其他分享 >PAT Basic 1099. 性感素数

PAT Basic 1099. 性感素数

时间:2023-04-15 16:24:13浏览次数:59  
标签:testpoint2 PAT int 1099 性感 素数 num Basic isPrime

PAT Basic 1099. 性感素数

1. 题目描述:

“性感素数”是指形如 \((p, p+6)\) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。(原文摘自 http://mathworld.wolfram.com/SexyPrimes.html)

现给定一个整数,请你判断其是否为一个性感素数。

2. 输入格式:

输入在一行中给出一个正整数 \(N\) (\(≤10^8\))。

3. 输出格式:

若 \(N\) 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 \(N\) 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。若 \(N\) 不是性感素数,则在一行中输出 No,然后在第二行输出大于 \(N\) 的最小性感素数。

4. 输入样例:

47
21

5. 输出样例:

Yes
41
No
23

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

此题会判断素数即可,但难点是逻辑处理容易漏掉一些条件,这可能也是此题通过率较低的原因。。。第一次提交时testpoint2,3报wrong answer,以为是当\(N\)不是素数时,找大于\(N\)的最小素数超出了int类型上限,就把int类型都改为long类型,但testpoint2,3依旧报错。。。于是检查逻辑处理部分,这里主要涉及以下坑点:

  • 在对num-6和num+6进行判断时,遗漏了对num本身的判断,加上后过了testpoint2
  • 当num本身不是素数时,递增num的条件判断中遗漏了对num-6的判断,加上后过了testpoint3

另外要注意在素数判断函数isPrime()中对0和1的处理,两个都不是素数。最后将long类型改回int类型发现也可以AC,不会超出int类型上限。

My Code:

#include <stdio.h>

// int isPrime(int num);
int isPrime(long num);

// first submit testpoint2, 3 wrong answer
// after rectify from int to long, testpoint2, 3 still wrong answer
int main(void)
{
    // int num=0;
    long num=0;
    
    scanf("%ld", &num);
    
    if(isPrime(num-6) && isPrime(num)) // forget to judge num itself, this fixed testpoint2
    {
        printf("Yes\n%ld\n", num-6);
    }
    else if(isPrime(num+6) && isPrime(num))
    {
        printf("Yes\n%ld\n", num+6);
    }
    else // num is not a sex Prime
    {
        ++num;
        while(!isPrime(num) || (!isPrime(num+6) && !isPrime(num-6))) //while(!isPrime(num) || !isPrime(num+6)) this add judge isPrime(num-6), fixed testpoint3
        {
            ++num;
        }
        printf("No\n%ld\n", num);
    }
    
    
    return 0;
}

int isPrime(long num)
{
    if(num<=1) return 0; // 0 and 1 is not a prime
    
    for(long i=2; i*i<=num; ++i)
    {
        if(num % i == 0)
        {
            return 0; // not a prime
        }
    }
    return 1;
}


// #include <stdio.h>

// // int isPrime(int num);
// int isPrime(int num);

// // first submit testpoint2, 3 wrong answer
// // after rectify from int to long, testpoint2, 3 still wrong answer
// int main(void)
// {
//     // int num=0;
//     int num=0;
    
//     scanf("%d", &num);
    
//     if(isPrime(num-6) && isPrime(num)) // forget to judge num itself, this fixed testpoint2
//     {
//         printf("Yes\n%d\n", num-6);
//     }
//     else if(isPrime(num+6) && isPrime(num))
//     {
//         printf("Yes\n%d\n", num+6);
//     }
//     else // num is not a sex Prime
//     {
//         ++num;
//         while(!isPrime(num) || (!isPrime(num+6) && !isPrime(num-6))) //while(!isPrime(num) || !isPrime(num+6))
//         {
//             ++num;
//         }
//         printf("No\n%d\n", num);
//     }
    
    
//     return 0;
// }

// int isPrime(int num)
// {
//     if(num<=1) return 0; // 0 and 1 is not a prime
    
//     for(int i=2; i*i<=num; ++i)
//     {
//         if(num % i == 0)
//         {
//             return 0; // not a prime
//         }
//     }
//     return 1;
// }

标签:testpoint2,PAT,int,1099,性感,素数,num,Basic,isPrime
From: https://www.cnblogs.com/tacticKing/p/17321314.html

相关文章

  • centos7 PATH 环境变量设置
    https://blog.csdn.net/qq_39715000/article/details/1250231901、系统环境变量系统环境变量对全部的用户生效,设置系统环境变量有三种方法。1)在/etc/profile文件中设置。用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环......
  • os.path.dirname;os.path.abspath;os.walk方法详解
    os.path.dirname:os.path.dirname(path):用来获取文件的路径   os.path.dirname(__file__):用来获取当前py文件的上层目录例如:当前文件所处位置为:D:/AutoTestSys/script/AutoFunction/test1.pyprint(os.path.dirname(__file__))返回的结果为: D:/AutoTestSys/script/Aut......
  • PAT Basic 1097. 矩阵行平移
    PATBasic1097.矩阵行平移1.题目描述:给定一个 \(n×n\) 的整数矩阵。对任一给定的正整数 \(k<n\),我们将矩阵的奇数行的元素整体向右依次平移\(1、……、k、1、……、k、……\)个位置,平移空出的位置用整数 \(x\) 补。你需要计算出结果矩阵的每一列元素的和。2.输入格......
  • PAT Basic 1096. 大美数
    PATBasic1096.大美数1.题目描述:若正整数 \(N\) 可以整除它的4个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。2.输入格式:输入在第一行中给出正整数 \(K\)(\(≤10\)),随后一行给出 \(K\) 个待检测的、不超过 \(1......
  • 二进制patch工具xdelta的使用方法
     Xdelta是一个二进制的diff工具[同时又兼具了patch功能],diff和patch是Unix世界里很有用的一对工具:我们通常将它们结合起来实现生成补丁,应用补丁的目的。如果要处理的不是文本文件,是二进制文件,我们可以使用一个专门用来处理二进制文件的工具–xdelta。      Xdelta......
  • Getting Started / Basic Structures
    有序点云类似于图像,数据被分成行和列,其来源是立体相机或则TOF相机。其优点是最近邻操作的效率要高得多,从而加快了计算速度,降低了PCL中某些算法的成本。无序点云无序点云的width是点云的总数,height为1判断是无序点云还是有序点云的函数是isOrganized()......
  • TypeScript 报错:Type '({ filename: string; createTime: string; filePath: string;
    问题:因为TypeScript不支持直接给一个接口类型的变量赋一个未知的值。如consta:A={ name:'s'};你需要给这样的对象或数组值使用as指定一个类型。正确写法:consta:A={ name:'s'}asA;数组写法一样:consta:A[]=[ { name:'s' }]asA[];使用as将一......
  • UVA 12295 Optimal Symmetric Paths 最短路求方案数
    题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23587题意:给一个n*n的矩阵,每个方格中有一个数字,从左上角走到右下角,且路径必须关于副对角线对称,求使路线上数字和最小的方案数思路:既然要关于副对角线对称,那么可以把关于副对角线对称的方格的值加到一起去,这样就......
  • pod中使用hostpath 持久化日志
    1、kubernetes日志持久化在Kubernetes中,可以使用各种不同的方式来持久化Pod中的日志。以下是一些常见的方法:使用HostPath:如上一个回答所示,可以使用HostPath来将Pod中的日志持久化到宿主机上。这种方法简单易用,但需要注意安全问题。使用本地存储卷:可以使用本地存储......
  • PAT Basic 1095. 解码PAT准考证
    PATBasic1095.解码PAT准考证1.题目描述:PAT准考证号由4部分组成:第1位是级别,即T代表顶级;A代表甲级;B代表乙级;第2~4位是考场编号,范围从101到999;第5~10位是考试日期,格式为年、月、日顺次各占2位;最后11~13位是考生编号,范围从000到999。现给定一系列......