素数问题

红帽黑客
• 阅读 1020

这次记录一道ACM很简单的一道题。

链接描述

题目意思呢是:输入三个数。a,d,n;
然后形成一个序列:a,a+d;a+2d;a+3d…………
从中寻找素数,输出第n个素数。

素数呢,就是只能整除1和它本身的数。
贴个判定素数的代码:

 bool sushu(int a)
 {
     float a1;
     a1=a;
     int i,k;
     k=sqrt(a1);//sqrt()函数为求根号函数,需要加头文件:#include<cmath> 
     if(a==1)//此处注意,我之前就是忘了有a=1这种情况,而提交失败。a=1时,直接返回false,不是素数。
         return false;
     for(i=2;i<=k;i++)
     {
         if(a%i==0)
             return false;
    }
    return true;
 }

做这道题我的思路呢是这样的。先建一个数组k,然后对a,a+d,a+2d……一个个的判定,是否是素数,若是,则存入数组。那么结果只要输出k[n-1]就可以了。

以下是完整代码:

#include<iostream>
#include<cmath> 
using namespace std;
bool sushu(int a);//判断是否素数,是返回true,否返回false 
int main()
{
    int a,b,c;
    while(1)
    {
        int i;
        cin>>a>>b>>c;
        if(a==0&&b==0&&c==0)
            break;
        int *k=new int[c];
        for(i=0;i<c;)
        {
            if(sushu(a))
                {
                    k[i]=a;
                    i++;
                }
            a=a+b;
         }
         cout<<k[c-1]<<endl;
    } 
    return 0;
 }
 bool sushu(int a)
 {
     float a1;
     a1=a;
     int i,k;
     k=sqrt(a1);
     if(a==1)
         return false;
     for(i=2;i<=k;i++)
     {
         if(a%i==0)
             return false;
    }
    return true;
 }

这道题虽然很简单,但是我一开始做的时候还是遇到了不少的问题。大多是由于我自己的基础不够扎实造成的。
比如不知道如何判定是否是素数。(这个很简单,知道素数的定义应该就明白了)。
还有一个是,我不习惯调用函数,老是把所有代码都写在主函数中,又麻烦,又不易理解,容易错。不是一个好习惯,以后改正。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Aidan075 Aidan075
4年前
表弟的数学题,我竟然用了python才解出来
↑关注置顶 有趣的不像个技术号大家好,我是朱小五本来这个周末过得开开心心,结果为了解一道数学题薅掉了一把头发、、、整整18根!而且还是一道小学数学题!!!到底是什么题呢?大家看看吧既然表弟都求到我这了,那就随便的做一做嘛。这不就是一道逻辑题嘛!先假如丁错,则甲乙丙对,此时最小的abc(2^3)\(3^2)\750
Stella981 Stella981
3年前
CTF训练之 CountingStars
今天介绍一道某比赛的真题。首先我们来进行CTF练习,进入实验链接:CoutingStars(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.hetianlab.com%2Fexpc.do%3Fec%3DECID9d6c0ca797abec201609071441380000
Stella981 Stella981
3年前
CTF训练之OneWayIn
上次的题目countingstar领悟透了吗?这次再介绍一道CTF真题吧,本次题目名称是onewayin,会用到代码解密等方面的知识。今天介绍的CTF题目很有意思的。进入实验链接OneWayIn(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.hetianlab.com%
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
HTTP面试题(二):HTTP请求报文和响应报文格式
!(https://oscimg.oschina.net/oscnet/0406894fb1274bee91fc53c84c516576.jpg)看都看了还不点个赞!(https://oscimg.oschina.net/oscnet/095d444dc9a449ee85afd19b00fdf52b.png)!(h
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Stella981 Stella981
3年前
PreparedStatement与Statement区别
  就这牛客网的一道题,进行分析PreparedStatement与Statement的区别。题目:关于PreparedStatement与Statement描述错误的是()A一般而言,PreparedStatement比Statement执行效率更高BPreparedStatement会预编译SQL语句CStatement
Stella981 Stella981
3年前
Golang之如何(优雅的)比较两个未知结构的json
这是之前遇到的一道面试题,后来也确实在工作中实际遇到了。于是记录一下,如何(优雅的)比较两个未知结构的json。假设,现在有两个简单的json文件。{"id":1,"name":"testjson01","isadmin":true}{"isadmi