请各位看看我哪里错了,求素数的c++编写

#include
using namespace std;

int isprime(int a);

int main()
{
int i, a[100], b[100], k = 10;
for (i = 0;; i++)
{
cout << "输入数";
cin >> a[i];
if (a[i] == 1)
{
i--;
continue;
}
if (a[i] == 0)
{
break;
}
if (isprime(a[i]) == 1)
{
b[k] = a[i];
k++;
}
cout << "是素数的是" << " " << a[i];
}

}

int isprime(int a)
{
for (int i = 2; i < a; i++)
{
if (a % i == 0)
return 0;
}
return 1;
}

你是要输出所有输入数中的素数吧。代码修改如下:




#include <iostream>
using namespace std;

int isprime(int a);

int main()
{
    int i, a[100], b[100], k = 0;
    for (i = 0;; i++)
    {
        cout << "输入数";
        cin >> a[i];
        if (a[i] == 1)
        {
            i--;
            continue;
        }
        if (a[i] == 0)
        {
            break;
        }
        if (isprime(a[i]) == 1)
        {
            b[k] = a[i];
            k++;
        }
        
    }
    cout << "是素数的是 ";
    for (i=0;i<k;i++)
    {
        if(i<k-1)
            cout << b[i]<<" ";
        else
            cout << b[i] ;
    }

}

int isprime(int a)
{
    if(a<2) return 0;
    for (int i = 2; i < a; i++)
    {
        if (a % i == 0)
            return 0;
    }
    return 1;
}

为什么k要从10开始呢,不应该是0吗?
还有数组b的用处是什么?

cout << "是素数的是" << " " << a[i];
这句应该写到上面的if (isprime(a[i]) == 1)代码块里 。b数组好像没有作用啊,而且k默认为10,why?