Đề bài chỉ bảo in ra thôi. Dùng mảng chi vậy bạn ???
Dùng mảng để chạy sàng Eratosthene chứ chi ^,^
Ko thì với mỗi con số mình đều phải chạy hàm kt nguyên tố, rất bất tiện.
Đây là chương trình dùng hàm Erratosthene để giải bài toán này, cái chuyện xuất ra 10 số mỗi dòng thì mình có thể dùng mẹo nhỏ là lợi dụng việc 1 dòng có 80 ký tự nên mỗi biến xuất ra sẽ xuất với độ rộng là 8 (hơi tà đạo tý nhưng làm vậy nhanh hơn là dùng thêm 1 vòng for, hehe)
Code:
#include <iostream>
#include <iomanip>
#include <cmath>
#define maxn 1500
using namespace std;
void eratosthene(bool a[],int n)
{
a[0] = false; a[1] = false;
int i,j;
for (i = 2; i <= n; i++) a[i] = true;
for (i = 2; i <= int(sqrt(n)); i++)
if (a[i]) for (j = 2; j <= n/i; j++) a[i*j] = false;
}
int main()
{
bool sang[maxn];
int n = 1015;
eratosthene(sang,n);
for (int i = 1; i <= 1015; i++)
if (sang[i]) cout <<setw(8) <<i;
system("pause");
return 0;
}