初级光能
大家好,又是我
请问1699这一题怎么写?
20分代码
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int x[1010],j;
bool zs(int z){
for(int i=2;i<=sqrt(z);i++){
if(z%i==0){
return false;
}
}
return true;
}
int main(){
int a,b,c=0;
cin>>a>>b;
for(int i=a;i<b;i++){
x[j]=i;
j++;
if(zs(i)&&i!=1){
c=1;
}
}
if(c==0){
cout<<"NO";
return 0;
}
j-=1;
for(int i=0;i<j;i++){
if(zs(x[i])&&i!=1){
cout<<x[i]<<endl;
}
}
return 0;
}
我知道有点怪
思路如下
定义一个判断质数的函数
bool zs(int z){
for(int i=2;i<=sqrt(z);i++){
if(z%i==0){
return false;
}
}
return true;
}
然后输入a,b
cin>>a>>b;
将a~b中所有数带入x数组,并判断有没有质数
for(int i=a;i<b;i++){
x[j]=i;
j++;
if(zs(i)&&i!=1){
c=1;
}
}
没有质数,输出NO并结束
if(c==0){
cout<<"NO";
return 0;
}
将j-1
j-=1;
输出所有质数
for(int i=0;i<j;i++){
if(zs(x[i])&&i!=1){
cout<<x[i]<<endl;
}
}
新手光能
你这个太复杂了 , 我的比较好理解 , 解释在代码里
头文件 <iostream>
头文件 <cmath>
using namespace std;
bool f(int n)//判断是否是质数函数
{
for(int i = 2;i <= sqrt(n);i ++)
if(n%i == 0) return false;
//
return true;
}
int main()
{
int a, b, ans = 0;
cin >> a >> b;
for(a;a <= b;a ++) {
if(f(a) == true && ans < 3)
//这里因为是从小到大判断的原因
//所以根本不需要用数组存储
//如果输出过三个了,则不再输出
{
ans ++;
cout << a << endl;
}
}
if(ans == 0) cout << "NO";
return 0;
}
初级光能