#K4003. C4.03 编程中的数学
C4.03 编程中的数学
一、程序阅读。
#include<bits/stdc++.h>
using namespace std;
const int N=1e8+1;
int a[N],b[N];
int n,m,t=1;
void fun()
{
a[0]=1;
a[1]=1;
for(int i=2;i<=n;i++)
{
if(a[i]==0)
{
b[t++]=i;
}
for(int k=1;k<t&&b[k]*i<=n;k++)
{
a[b[k]*i]=1;
if(i%b[k]==0)
{
break;
}
}
}
}
int main()
{
cin>>n>>m;
fun();
for(int i=1;i<=m;i++)
{
int d;
cin>>d;
cout<<b[d]<<endl;
}
return 0;
}
判断题
- 程序中任意质数只会被标记一次?( ) {{ select(1) }}
- 对
- 错
- 此程序时间复杂度O(n*n)?( ) {{ select(2) }}
- 对
- 错
- 第三行代码可以变成#define N 1e8+1,程序结果不会发生改变?( ) {{ select(3) }}
- 对
- 错
- 程序为欧拉筛?( ) {{ select(4) }}
- 对
- 错
选择题
- 程序中输入2 1 4,输出结果等于?( ) {{ select(5) }}
- 1
- 0
- 7
- 无输出
二、程序填空
题目描述
输入一个偶数N,验证4~ N所有偶数是否符合哥德巴赫猜想。
哥德巴赫猜想: 任一大于2的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。
例如:,则 是错误答案。
#include<bits/stdc++.h>
using namespace std;
int n;
bool fun(int m)
{
for(int i=__①__; i*i__②__m; i++)
{
if(m%i==0)
return 0;
}
return 1;
}
int main()
{
cin>>n;
for(int i=__③__; i<=n;__④__)
{
for(int j=2; j<=i/2; j++)
{
if(fun(j)&&fun(__⑤__))
{
cout<<i<<"="<<j<<"+"<<i-j<<"\n";
break;
}
}
}
return 0;
}
- 第①处。( ) {{ select(6) }}
- 0
- 1
- 2
- n
- 第②处。( ) {{ select(7) }}
- <=
- <
- !=
- ==
- 第③处。( ) {{ select(8) }}
- 1
- 2
- 4
- 0
- 第④处。( ) {{ select(9) }}
- i++
- i+=2
- i+2
- ++i
- 第⑤处。( ) {{ select(10) }}
- i-j
- i
- n
- i*j