2025年厦门大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
2026/5/31 15:40:48 网站建设 项目流程

2025年厦门大学计算机考研复试机试真题

2025年厦门大学计算机考研复试上机真题

历年厦门大学计算机考研复试上机真题

历年厦门大学计算机考研复试机试真题

更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream

N 诺 DreamJudge 题库:输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

非素数个数

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

求a-b之间的非素数个数

特别的,1也算作素数,区间是[a, b]。

输入输出格式
输入描述:

多组测试数据。 输入两个正整数数a,b,其中a<=b<=10^7。

输出描述:

输出答案。

输入输出样例
输入样例#:
1 10 1 100
输出样例#:
5 74

代码一

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int f[10000000]={0};
  4. void func(int b){
  5. for(int i=2;i<=sqrt(b);i++){
  6. if(f[i]==0)
  7. for(int j=i*i;j<=b;j+=i){
  8. f[j]=1;
  9. }
  10. }
  11. }
  12. int main(){
  13. int a,b;
  14. while(cin>>a>>b){
  15. int cnt=0;
  16. func(b);
  17. for(int i=a;i<=b;i++){
  18. if(f[i]==1)
  19. cnt++;
  20. }
  21. cout<<cnt<<endl;
  22. }
  23. return 0;
  24. }

代码二

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. const int N=1e7+5;
  5. int s[N];
  6. bool st[N];
  7. void prime()
  8. {
  9. st[1]=1;
  10. for(int i=2;i<N;i++)
  11. {
  12. st[i]=1;
  13. }
  14. for(int i=2;i<N;i++)
  15. {
  16. if(st[i])
  17. {
  18. for(long long j=(long long)i*i;j<N;j+=i)
  19. st[j]=0;
  20. }
  21. }
  22. s[0]=0;
  23. for(int i=1;i<N;i++)
  24. {
  25. s[i]=s[i-1]+(st[i]==1?1:0);
  26. }
  27. }
  28. int main()
  29. {
  30. prime();
  31. int a,b;
  32. while(cin>>a>>b){
  33. int res=b-a+1;
  34. int ans=s[b]-s[a-1];
  35. cout<<res-ans<<endl;
  36. }
  37. }

代码三

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <math.h>
  4. bool mark[10000001];
  5. void init(){
  6. for(int i = 1;i <= 10000000;i++){
  7. mark[i] = false;
  8. }
  9. int bound = (int)sqrt(10000000) + 1;
  10. for(int i = 2; i <= bound;i++){
  11. if(mark[i] == true){
  12. continue;
  13. }
  14. for(int j = i * i;j <= 10000000;j += i){
  15. mark[j] = true;
  16. }
  17. }
  18. }
  19. int main(){
  20. int a, b;
  21. init();
  22. while(scanf("%d%d", &a, &b)!=EOF){
  23. int res = 0;
  24. for(int i = a; i <= b;i++){
  25. if(mark[i] == true){
  26. res++;
  27. }
  28. }
  29. printf("%d\n", res);
  30. }
  31. return 0;
  32. }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询