gpt4 book ai didi

c++ - 我怎样才能让这个函数输出最大数组值?

转载 作者:行者123 更新时间:2023-11-28 01:14:56 25 4
gpt4 key购买 nike

我是 C++ 的新手,正在尝试使这段代码正常工作。这是一个基本算法质数。我制作了一个数组,其大小由用户输入定义。然后我需要打印只有这个数组中的最大素数。我怎样才能在这里做到这一点?

unsigned long long nPrime(unsigned n) {
long long *a = new long long[n + 1];
long long maxNum = a[n];

for (int i = 0; i < n + 1; i++) {
a[i] = i;
}
for (int j = 2; j < n + 1; j++) {
if (a[j] != 0) {
for (int k = j * j; k < n + 1; k += j) {
a[k] = 0;
}
cout << a[j] << endl;
}
}
return 0;
}

最佳答案

您可以使用 std::max_element 找到数组中最大的数字来自 <algorithm> :

return *std::max_element(a, a+n);

但这甚至不是必需的。由于最大素数将是您找到的最后一个素数,因此只需跟踪它:

int biggestPrime = 2;

然后,当你找到一个质数时:

biggestPrime = j;

您还可以替换 long long 的数组带有 bool 的数组,因为索引已经跟踪了数字:

unsigned long long nPrime(unsigned n) {
bool *a = new bool[n + 1]();
long long maxNum = a[n];
int biggestPrime = 2;

for (int j = 2; j < n + 1; j++) {
if (!a[j]) {
for (int k = j * j; k < n + 1; k += j) {
a[k] = true;
}
biggestPrime = j;
}
}
delete[] a;
return biggestPrime;
}

最后但同样重要的是,不要忘记 delete完成后动态分配的内存:

delete[] a;

关于c++ - 我怎样才能让这个函数输出最大数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com