一本同题库 第一部分 C++语言 --> 第四章 循环结构的程序设计 1099

1099:第n小的质数

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 19092     通过数: 9527

【题目描述】

输入一个正整数n,求第n小的质数。

【输入】

一个不超过10000的正整数n。

【输出】

第n小的质数。

【输入样例】

10

【输出样例】

29

源代码
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int n;
    int i,j;
    int sum=0;

    cin>>n;
    for(i=2;; i++)
    {
        for(j=2; j<=sqrt(i)&&i%j!=0; j++);
        if(j>sqrt(i))
        {
            sum++;
            if(sum==n)
            {
                cout<<i<<endl;
                break;
            }
        }
    }

    return 0;
}
这道题也是寻找素数,这里不仅仅是循环嵌套的重要应用,而且还让我学到了有一些新方法当第二个for在循环时,并不用加上一些其他的操作,而判断方式均在for中体现如
for(j=2; j<=sqrt(i)&&i%j!=0; j++);可写为:for(j=2;j<=sqrt(i);j++){  if(i%j!=0)  continue;  else  break;      //这里当j最大时,j+1>sqrt(i),跳出循环}if(j>sqrt(i))...这样可以避免运算范围过大,计数重复等问题。

在第一个for循环中,第二个循环条件没有加,是因为这里的运算已经比较复杂,可以不输入范围,而后面的break可以帮助它跳出循环,避免死循环。

这道题中的break的用法以及用第二个for来排查素数的方法都是我所没有想到的,这里的用法也教会了我许多情景下的用法,对break的理解和使用也更加透彻了,break在很多时候都时辅助跳出循环的好帮手,之后的题目也有很多用到了break跳出循环,也是”一题点醒梦中人”


原文地址:https://www.cnblogs.com/jd1412/p/12244227.html

时间: 2024-10-03 09:55:02

一本同题库 第一部分 C++语言 --> 第四章 循环结构的程序设计 1099的相关文章

一本通题库 第一部分 C++语言 --&gt; 第五章 数 组 1114:白细胞计数

1114:白细胞计数 时间限制: 1000 ms         内存限制: 65536 KB提交数: 26662     通过数: 8522 [题目描述] 医院采样了某临床病例治疗期间的白细胞数量样本nn份,用于分析某种新抗生素对该病例的治疗效果.为了降低分析误差,要先从这nn份样本中去除一个数值最大的样本和一个数值最小的样本,然后将剩余n−2n−2个有效样本的平均值作为分析指标.同时,为了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包括已扣除的两个样本)与该平均值

一本通题库 第一部分 C++语言 --&gt; 第五章 数 组 1116:最长平台

1116:最长平台 时间限制: 1000 ms         内存限制: 65536 KB提交数: 30087     通过数: 9565 [题目描述] 已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸.例如,在 1,2,2,3,3,3,4,5,5,61,2,2,3,3,3,4,5,5,6中1,2−2,3−3−3,4,5−5,61,2−2,3−3−3,4,5−5,6都是平台.试编写一个程序,接收一个数组,把这个数组最长的平

c语言第六章-循环结构II

for(  表达式1  ;  表达式2   ;  表达式3  ){     语句:}for 循环与 while 循环类似,属于先判断后执行执行顺序是:表达式1.表达式2.语句.表达式3-->表达式2.语句.表达式3......表达式1为初始化.表达式2为条件表达式.语句为循环体.表达式3为增量表达式1.表达式2 .表达式3都可以省略,但分号不能省略省略表达式1:应该在循环前初始化省略表达式2:即不判断循环条件,也就是认为表达式2始终为真,这时应在循环体内设法结束循环,否则将成为死循环省略表达式3

C语言 第四章 分支结构练习

目录 一.输入语文,数学成绩,根据平均分分3档 二.使用switch实现算术运算 三.使用多重if实现算术运算 四.for循环 五.while循环 六.do while循环 七.密码示例 八.多重if实现计算月份天数 九.switch实现计算月份天数 十.计算闰年 十一.判断素数 十二.100内所有素数 十三.switch实现输入数字与符号运算结果 十四.多重if实现输入数字与符号运算结果 一.输入语文,数学成绩,根据平均分分3档 #include "stdio.h" void mai

C语言 第五章 循环结构

一.for 二.while 三.do while 四.continue 五.break 一.for 请在屏幕上输出1000个*号 printf("*************************...."); #include "stdio.h" void main() { int i; for(i=1;i<=1000;i++){ printf("*"); } } for(表达式A:表达式B:表达式C){要重复执行的代码块D;} 1.表达

c语言第五章-循环结构I

需要多次重复执行一个或多个任务的问题考虑使用循环来解决while循环:格式:while(条件表达式){    循环体      }循环三要素:初始化.条件表达式.增量条件表达式必须是可改变的量,否则可能形成死循环while和do while的区别:while循环先判断条件是否为真,再决定是否执行循环体do while循环是先执行一次循环体,再判断当条件为假时,do while比while多执行一次循环嵌套循环:外打行,内打列只有内循环执行完毕,外循环才会执行一次循环结构的特点是,在给定条件成立时

c语言第四章-条件结构

表达式:由运算符和操作数组成赋值运算符:=多分枝选择结构if else if else if else嵌套结构if(){    if(){            }}switch case 结构default可以省略表达式中只能使用整形数值三目运算符:表达式1?表达式2:表达式3;如果表达1为真执行表达式2 否则执行表达式3;三目运算符是if else if 的替代品 原文地址:https://www.cnblogs.com/zxk1995/p/8596622.html

CCNA题库第一部分

1.Which technology supports the stateless assignment of IPv6 addresses?(Choose two.) 哪些技术支持无状态任务的IPv6地址?(BD) A. DNS B. DHCPv6 C. DHCP D. autoconfiguration 2.After you configure the Loopback0 interface, which command can you enter to verify the status

第一部分 基础篇 第四章 MongoDB查询

声明:该文章主要来自<MongoDB实战>一书内容,主要想通过该书学习MongoDB的相应知识,加深理解,故写在自己的博文当中,作为记录,在最后的章节中,会有一个自己集合MongoDB数据库应用的JavaEE的web应用. 1.查询记录 1.1.普通查询 在没有深入查询之前,我们先看看怎么从一个查询中返回一个游标对象,可以简单的通过find()来查询,它返回一个任意结构的集合,如果实现特定的查询在稍后讲解. 实现上面同样的查询,然后通过while来输出: > var cursor = d