c语言筛选法求100之内素数,用筛选法求100之内的素数。

/*用筛选法求给出范围之内的素数。*/

#include

#include

int isPrime(int n){//判断素数

for(int i = 2; i < n; i ++){

if(n % i == 0)

return 0;

}

return 1;

}

int* allPrime(int scale){//这个函数要存储下来给定范围内的所有素数

/*而因为这个存储函数不在main函数内,如果用数组存储仅仅是局部变量,

无法实现跨函数输出,因此想到用指针代替,int* 代表输出结果是个指针*/

int cnt = 0;//记录有多少个素数,便于之后分配指针内存

for(int i = 2; i <= scale; i ++){//有cnt个素数

if(isPrime(i))

cnt ++;

}

int* store = malloc(sizeof(int) * cnt);//分配cnt个大小的内存空间

int serial = 0;//将各个素数按顺序存进指针中,serial代表元素

for(int i = 2; i <= scale; i ++){//再次走遍范围内所有数

if(isPrime(i)){//判断是否为素数

* (store + serial) = i;//存进指针

serial ++;

}

}

*(store + cnt) = 0;//最后一个元素的下一位设零

return store;//返回指针

free(store);//释放空间

}

int main(){

int scale;//输入范围

scanf("%d", &scale);

for(int i = 0; * (allPrime(scale) + i) != 0; i ++){//i代表元素

/*判断条件就是当前指针元素是否非零,非零就输出来,为零,说明结束*/

printf("%d ", * (allPrime(scale) + i));//取出指针中的值

}

printf("\n");

}

发表于 2019-12-24 12:22:03

回复(1)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值