C语言用指针求2到300间的素数,急!!!求大虾帮忙!!!

void sushu(int a[],int min,int max); //用指针
void printsushu();
int a[150];
min=2,max=300
打印2到300间的素数

优化的代码,在vc下通过了编译:
#include<stdio.h>
bool is_prime(int n) //判断整数是否是 素数
{
int s = sqrt(n);
int i = 0;
for (i=2; i<=s; i++)
if (n%i == 0)
return false;
return true;
}
void sushu(int a[],int min,int max)//找出min 到max之间的素数,并保存到数组 a中。
{
int s;
int count=0;
if(min==2) {a[count++]=2;s=3;}
else
{
s=(min%2==0)?min+1:min;
}
for(;s<=max;s+=2)
{
if(is_prime(s)) a[count++]=s;
}
a[count]=0;
return;
}
//打印数组
void printsushu(int a[])
{
int i=0;
while(a[i]!=0)
{
printf("%d\n",a[i]);
i++;
}
}
int main(void)
{
int a[200]={0};
sushu(a,2,300);
printsushu(a);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-19
#include<stdio.h>
#include<string.h>
#define MAX 300
#define MIN 2
void sushu(int a[],int min,int max)
{
int i,j,flag,r=0;//flag 为1是是素数,为0不是
for(i=MIN;i<=300;i++)
{
for(j=2;j<i;j++)
{
flag=1;
if(i%j==0)
flag=0;

}
if(flag==1)
{
a[r]=i;
r++;
}
}

}
void main()
{
int a[150],n,i;

sushu(a,MIN,MAX);
for(i=0;i<150;i++)
printf("%5d",a[i]);

}
第2个回答  2011-05-15
include "stdio.h"
main()
{int i,x;
for(x=2;x<=300;x++){
for(i=2;i<=x-1;i++){
if(x/i==0)
break;
}
if(x==i){

printf("%d\n",x);
}
}
}追问

谢谢,可是要用指针的话,该怎么做呢?

第3个回答  2011-05-15
include "stdio.h"
main()
{int i,x;
for(x=2;x<=300;x++){
for(i=2;i<=x-1;i++){
if(x/i==0)
break;
}
if(x==i){

printf("%d\n",x);
58442849+489484848=
第4个回答  2020-05-12
优化的代码,在vc下通过了编译:
#include<stdio.h>
bool
is_prime(int
n)
//判断整数是否是
素数
{
int
s
=
sqrt(n);
int
i
=
0;
for
(i=2;
i<=s;
i++)
if
(n%i
==
0)
return
false;
return
true;
}
void
sushu(int
a[],int
min,int
max)//找出min
到max之间的素数,并保存到数组
a中。
{
int
s;
int
count=0;
if(min==2)
{a[count++]=2;s=3;}
else
{
s=(min%2==0)?min+1:min;
}
for(;s<=max;s+=2)
{
if(is_prime(s))
a[count++]=s;
}
a[count]=0;
return;
}
//打印数组
void
printsushu(int
a[])
{
int
i=0;
while(a[i]!=0)
{
printf("%d\n",a[i]);
i++;
}
}
int
main(void)
{
int
a[200]={0};
sushu(a,2,300);
printsushu(a);
return
0;
}
相似回答