筛选法求素数

素数:又称质数,指的是在大于1的自然数中,除了1和该数自身外,无法被其它自然数整除的数(也可定义为只有1和与该数本身两个因数的数)

用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

引入示例

其实解决问题的思路已经被题目说的非常明白,就是将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

代码如下:

#include <stdio.h>

int main() {
    int x;
    printf("请输入x次循环:"); 
    scanf("%d",&x);
    while(x--){
        int n;
        int count=0;
        printf("请输入n的值:"); 
        scanf("%d",&n);
        int arr[n+5];
        
        for(int k=0;k<=n;k++){//赋值 
          arr[k]=k;
          printf("%d ",arr[k]);
         }
         printf("\n");
         
         for(int i = 2;i <= n; i++){
            int tem = i;
            for(int j = tem + 1 ;j <= n; j++ ){
                if(j % tem == 0 && j <= n ){
                 arr[j] = 0; 
                }  
            }	
            if(arr[i]==0){
            	count++;
            }
			else{
        	printf("%d ",arr[i]);
          }
        }
		printf("\n");
		printf("数组内容:");
        for(int q=2;q<=n;q++){
        	printf("%d ",arr[q]);
        } 
         
        printf("\n"); 
        printf("含0数:");
        printf("%d",count); 
    }
    return 0;
}

 

总结 :今天的出题与解题就到这里辣,有不会的小伙伴们

可以评论区发表意见,我会一一解答哦!

如果您觉得小编写的还可以或者还有哪些地方需要改进的话评论区留言好嘛!

感谢您的阅读!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值