** 素数-只能被1和它本身整除的整数**
- 利用函数(试除法)
构建一个函数判断i是否为素数,若为素数返回1,不是素数返回0;int is_prime(int i) {int j = 0; for(j=2;j<i;j++)//拿2至i-1之间的数去除i {if(i%j==0);//如果整除返回0 return 0; } return 1;//不整除返回1 } int main() {int n = 0; scanf("%d",&n); for(i=1;i<=n.i++)//判断i是否为素数 if(is_prime(i)) { printf("%d",i);}//是素数将其打印 return 0; }
- 筛选法
此方法大意为将2-n之间的正整数放在数组内储存,将数组2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清零,以此类推直到n为止,最后数组中不为0的元素即为素数int main() { int n = 0; int arr[101]={0};//定义一个数组,这里要注意的是,将数组定义为101,就可以使数组下标与其元素相互对应,比如下标分别为0 1 2 3 时,其内的元素也分别为0 1 2 3 while(~scanf("%d",&n));//多组输入,若无需多组输入取消while循环即可 { int i = 0; for(i=0;i<n;i++)//此循环目的在于将0-n之间的元素存放到数组中去 {arr[i]=i; } for(i=2;i<=n;i++)//此循环进行筛选 {int j = 0; for(j=i+1;j<=n;j++) {if(arr[j]%i==0)//当第j个元素及其后面的元素能整除i时,把0赋值给这个元素 arr[j]=0;//赋值 } } int count = 0; for(i=2;i<=n;i++) { if(arr[i]==0)//这里数一下有多少个数被赋成了0 count++; else printf("%d ",arr[i]);//输出素数 } printf("\n%d\n",count);//输出0的个数 } return 0 ; }