素数:又称质数,指的是在大于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;
}
总结 :今天的出题与解题就到这里辣,有不会的小伙伴们
可以评论区发表意见,我会一一解答哦!
如果您觉得小编写的还可以或者还有哪些地方需要改进的话评论区留言好嘛!
感谢您的阅读!