Bạn tránh để hàm main xử lý nhiều công việc quá như thế. Về thuật toán tìm số ngt thì nhiều cách lắm, cách của bạn cũng là một trong những cách đó . Tui post lại bài C++ ngày xưa mới học
Code:
//Chuong trinh liet ke cac so nguyen to <n (2<n<=100)
#include<iostream.h>;
#include <iomanip.h>;
int ngto(int n);
void nhapn(int &n);
void demvaxuat(int n);
//ham kiem tra so nguyen to dua vao so uoc
int ngto(int n)
{
int dem=0;
for (int i=1;i<=n;++i)
if (n%i==0)
dem = dem + 1;
if ( dem == 2 )
return 1; // la so nguyen to
else
return 0; // ko phai so nguyen to
}
//ham nhap 2<n<=100)
void nhapn(int &n)
{
do
{
cout<<"Nhap n:";
cin>>n;
} while (n<2||n>100);
}
//Dem va xuat so nguyen to
void demvaxuat(int n)
{
int dem=0;
for (int i=2;i<n;i++)
{
if (ngto(i))
{
cout<<i<<setw(4);
dem++;
}
}
}
//Ham main
void main()
{
int n;
nhapn(n);
demvaxuat(n);
}