** 素数-只能被1和它本身整除的整数**

  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. 筛选法
    此方法大意为将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 ;
    }