请教一个C语言题目,如何判断一个数是否为质数,并且找出一段范围内全部的质数并输出,在线等,

原题,编程序先用一层循环判断某一个从键盘读入的整数是否为质数。在此基础上,再加上外层循环,找出规定范围(a,b)内的所有质数,并 按每行5个的格式输出。
能在VC 6.0上运行哈
大家帮帮忙吧
另外用输入数据验证技术保证读入的a,b在【10,1000】范围内,并且a是下限,b是上限,也就是说,应该符合的条件是:10<=a<=b<=1000,否者输入数据无效,提示用户重新输入a,b,请写出你控制读入的a,b的循环语句

【问题描述】:
试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。

【程序清单】:
#include <stdio.h>

int creat_prime(int prime[],int n,int total)
{
register int i;
register int j;
register int gab=2;
register int count;
for(i=7;i<=n;i+=gab)
{
count=1;
gab=6-gab;
for(j=0;prime[j]*prime[j]<=i;j++)
{
if(i%prime[j]==0)
{
count=0;
break;
}
}
if(count)
{
prime[total]=i;
total++;
}
}

return total;
}

int main(void)
{
int prime[30000]={2,3,5};
int total=3; //找到素数的个数
int i;
int n=200000; //要查找的范围(>=6)

total=creat_prime(prime,n,total);
for(i=0;i<total;i++)
{
printf("%d ",prime[i]);
if(i && !(i%10))
putchar('\n');
}
putchar('\n');
}追问

看具体题目
来个高手就给我编写下啊
转的也要题目一样啊
这个东西差一点就插很远哦
我还在等呢

追答

#include "stdio.h"
main()
{
int a,b,m,i,k,h=0,leap;
printf("请输入要查找素数的范围:");
scanf("%d %d",&a,&b);
while(ab||b>1000)
{
printf("输入数据有误,请重新输入");
scanf("%d %d",&a,&b);
}
for(m=a;m<=b;m++)
{
leap=1;
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%-5d",m);
h++;
if(h%5==0)
printf("\n");
}
}
getch();
}

参考资料:http://tieba.baidu.com/f?kz=170308564

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-22
筛法追问

具体点
我要成寻

相似回答