C语言求2到N素数的问题

我大一刚学C语言~~~入门很困难啊~~~现在只会基本的东西 这题我是真不会啊~~~各位大哥大姐帮帮忙吧
求2到N素数 N由键盘输入 输出后每行是是个数
每行是10个素数 我们老师让用那个N去除以 2到根号N之间 的数 看看不能整除就是素数 能整除就不是素数 但是我一写就错 能不能用这个方法写

第1个回答  2008-12-21
#include <iostream>
using namespace std;
bool B(int &n) //一个函数判断是否为素数
{
int i;
float k = float(n);
float j = sqrt(k);
for(i=2;i <= j;++i)
{
if( n%i == 0 || n == 0 )
return false;
}
return true;
}

void main()
{
int N;
cout << "输入N的值:" ;
cin >> N;
cout << "2到N的素数为:" << endl;
for(int i = 2;i<N;i++)
{
if(B(i))
{
cout << i <<" ";
}
system("pause");
}
第2个回答  2008-12-21
楼上的方法,效率太低, 要是我输入一千万,不知道要运行多少时间! 应该采用过滤的方法,那是最快的,而且不需要用到除法运算,甚至可以连乘法都不用。
第3个回答  2008-12-21
#include<stdio.h>
#include<math.h>
#define IN 1
#define OUT 0
void main()
{
int i,j,n,m=0,t=IN;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
t=OUT;
break;
}
}
if(t)
{
if(m>=10)
{ printf("\n");m=0;}
printf("%d",i);
}
}
}本回答被提问者采纳
相似回答