当前位置: 首页 > 知识库问答 >
问题:

给定范围之间有多少个素数?C[重复]

淳于升
2023-03-14

所以,我做了这个小程序。它给出了所有正确的输出,但当它上传到网上法官扔我一个时间限制超过。有什么办法让它更有效率吗?

这是我的代码

int const MAX = 1000001;  
#include<iostream> 
#include<string>
#include<cmath>

using namespace std;

int main()
{
    int count = 0, array[MAX], a, b, pi = 0;  
    bool end = false;

for(int i = 1; i <= MAX; i++)
{
    count = 0;
    for(int j = 2; j <= sqrt(i); j++)
    {
        if(i % j == 0)
        {
            array[i]=0;
            count++;
            break;
        }
    }
    if(count == 0 && i != 1){
        array[i]=1;
    }
}

do {
    cin >> a >> b;
    pi = 0;
    if ((a == 0) && (b == 0)) {
        end = true;
        break;
    }
    else {
        for (int i = a; i <= b; i++) {
            if (array[i] == 1) {
                pi ++;
            }
        }
        cout << pi << endl;
    }
} while (end == false);
cout << endl;

return 0;
}

共有1个答案

夏志国
2023-03-14

您可以考虑使用埃拉托斯特尼的筛子。它是一种高效的素数生成算法。

 类似资料:
  • 我有三个变量Min=0.29、Max=6.52和center=2.10。我希望创建一个表,以以下方式将这些数据以表格式分配为100个值: 这里,这个图像可以分成0到50和50到100两部分。 在第一部分中,后续值的x与y的增加在1-10与10-20之间较高,在10-20与20-30之间较高,以此类推。 在第二部分中,随后值的x与y的增加在50-60比60-70之间较低,在60-70比70-80之间

  • 本文向大家介绍计算C ++中给定范围内的最小元素数,包括了计算C ++中给定范围内的最小元素数的使用技巧和注意事项,需要的朋友参考一下 我们得到了一个大小为N的整数数组。变量L和R定义了一个介于1和N之间的范围。目标是找到位于范围L和R中的最小元素数,使得L> = 1且R <= N. 我们将遍历位于范围L和R中的元素并找到最小的元素,以实现此目的。 同样,遍历范围L和R的元素,如果任何元素等于在步

  • 所以我必须写一个程序,找到给定范围之间的所有回文数。程序必须使用numDigits()方法,该方法接受int数并返回该int的位数。 一个isPalindrome()方法,它将接受一个int数字,并返回一个布尔值true或false,无论该数字是否回文 我在这里编码了一个numDigit()方法: 我知道如何用另一种方法找到回文,但作业是专门针对这种技术的。我如何实现这个numDigit()方法来

  • 问题内容: 我的数据库中有以下一组匹配日期的日期(dd / MM / yyyy): 事件具有开始和结束日期(时间无关紧要),并且endDate为NULL表示事件仍在进行中。 我想确定的是两个任意日期之间的日期范围,其中a)没有事件,b)事件重叠。 因此,对于输入日期范围01/04/2009-30/06/2009,我希望得到以下结果: 注意,作为结果,两个相邻的重叠范围是可以接受的。 谁能用SQL算

  • 我有一个数字列表,现在我想从列表中取一个数字,并检查有多少个元素可以将这个数字与余数除以0。 这是我的代码: 对于示例输入: 输出是: 但是此代码以 的时间复杂度运行。但是我的输入列表大小范围最大为 10 5,每个元素也在 1 到 105 之间。那么如何提高这个程序的时间复杂度呢?

  • 本文向大家介绍c语言求出给定范围内的所有质数,包括了c语言求出给定范围内的所有质数的使用技巧和注意事项,需要的朋友参考一下 程序功能: 输入一个整数,要求打印出这个整数以内的所有质数。 程序示例: 程序解析: 1,IsPrime()函数用来判断一个整数是不是质数,如果是返回true,否则返回false。在这个函数中因为调用了C语言库函数sqrt(),所以要在头文件中包含#include 。 2,s