1699 找质数
题目描述 Description
a和b是正整数,判断 >=a 且 <=b 的数中有没有质数 ① 如果没有质数则输出“NO”; ② 如果有质数且质数的个数在3个以内的话输出质数的值(每个数占一行) ③ 如果有质数且质数的个数多于3个的话输出最小的三个质数的值(每个数占一行)
输入描述 Input Description
一行:a b
输出描述 Output Description
NO或者找到的质数
样例输入 Sample Input
14 20
样例输出 Sample Output
17
19
数据范围及提示 Data Size & Hint
3 <= a < b <=1000
#include<bits/stdc++.h>
using namespace std;
bool zhi(int x)
{if(x==1)
return false;
else
for(int a=2;a<=sqrt(x);a++)
if(x%a==0)
return false;
return true;
}
void read()
{
int n,m,flag=1,falg=0;
cin>>n>>m;
for(int i=n;i<=m;i++)
{
if(flag<=3)
{
if(zhi(i)==true)
{
cout<<i<<" ";
falg=1;
flag++;
}
}
}
if(falg==0)
cout<<"NO";
}
int main()
{
read();
return 0;
}
不明白为什么30分
核心代码:
for(int j=a;j<=b;j++){
if(j==2){
cout<<2<<endl;
c++;
}
for(int i=2;i<j;i++){
if(j%i==0)
break;
if(i==j-1){
cout<<j<<endl;
c++;
}
}
if(c==3)
break;
}
if(c==0)
cout<<"NO";
1699 找质数
题目思路:
第一部分(无质数):
双重循环遍历 a~b 之间所有的数,内循环外(外循环内)判断是否是质数(8到18行),若是, K 加一。
双重循环外判断是否有质数,若不是,就输出"NO"。
第二部分(有 1~3个质数):
双重循环遍历 a~b 之间所有的数,内循环外(外循环内)判断是否是质数(8到18行),若是, 就输出。
第三部分(有大于 3 个质数):
双重循环遍历 a~b 之间所有的数,判断是否只输出了三次(if t==3)若正好(超过)三次,就退出程序。
内循环外(外循环内)判断是否是质数(8到18行),若是,t++ 并输出。
张天璨在2020-04-24 09:57:08追加了内容
张天璨在2020-04-24 10:00:05追加了内容
张天璨在2020-04-24 10:01:15追加了内容