循环数组赋值的C++实现。退货

循环数组赋值的C++实现。退货,c++,C++,我试图生成LIMIT,比如LIMIT=1000个素数,并将它们存储到一个数组中,但我得到了返回的垃圾。这是我的密码: #include <iostream> using namespace std; void prime_num(int); int main() { int primes[1000]; int n, p, t, LIMIT = 1000; for(n=2; n <= LIMIT; n++) { t=0;

我试图生成LIMIT,比如LIMIT=1000个素数,并将它们存储到一个数组中,但我得到了返回的垃圾。这是我的密码:

#include <iostream>
using namespace std;
void prime_num(int);
int main()
{
    int primes[1000];
    int n, p, t, LIMIT = 1000;
    for(n=2; n <= LIMIT; n++)
    {
        t=0;
        for(p=2; p <= n/2; p++)
        {
            if (n%p == 0)
            {
                t = 1;
                break;
            }
        }
        if(!t) 
            primes[p-2] = n;
    }
    for (int i = 0; i < LIMIT; i++)
        cout << primes[i] <<" ";
    return 0;
}

在外部循环外定义一个变量:

int count=0;
然后在这里使用它:

primes[count++] = n;
然后打印为:

for (int i = 0; i < count; i++)
    cout << primes[i] <<" ";
is_素数的正确性和优化:


现在你决定is_素数的正确性。写得对吗?它优化了吗?是否确实需要检查[2,n/2]范围内的所有整数?

在外部循环外定义一个变量:

int count=0;
然后在这里使用它:

primes[count++] = n;
然后打印为:

for (int i = 0; i < count; i++)
    cout << primes[i] <<" ";
is_素数的正确性和优化:


现在你决定is_素数的正确性。写得对吗?它优化了吗?您真的需要检查[2,n/2]范围内的所有整数吗?

我首先将其分解为一些可以理解的部分。在prime_num的原型中,您似乎已经考虑到了这一点,但似乎没有贯彻到底。我也会把它改成类似bool isprimeint的东西;它返回一个布尔值来指示一个特定的数字是否为素数。我想你们应该找到小于或等于极限的素数;找不到极限素数。我会先把它分解成一些可以理解的片段。在prime_num的原型中,您似乎已经考虑到了这一点,但似乎没有贯彻到底。我也会把它改成类似bool isprimeint的东西;它返回一个布尔值来指示一个特定的数字是否为素数。我想你们应该找到小于或等于极限的素数;没有找到极限素数。在你的最后一个循环中,我是计数而不是极限。非常感谢。有没有一种更简洁的方法来做我想做的事?@user1293973:自己想想,自己试试-在最后一个循环中,我是计数而不是极限。非常感谢。有没有一种更简洁的方法来做我想做的事?@user1293973:自己想想,自己试试-