三种用C语言求素数的方法 筛选法..

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Chen51_5/article/details/80292604
素数 1.筛选法求1-100内的素数
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//#include"stdafx.h"
void Prime(int n)
{
 int*arr=(int*)malloc(n*sizeof(int));
 for(int i=0;i<n;i++)
 {
  arr[i]=1;                    //全部置为1;
 }
 for(int num=2;num<n;num++)      //判断下标是不是素数,不是将里面存放的数据置为0
 {
  for(int j=num+1;j<n;j++)    //从最小的素数开始 看它是不是2 的 倍数
  {
   if(j%num==0)
   {
    arr[j]=0;
   }
  }
 }
 for(int k=2;k<n;k++)           //从下标2开始打印  因为0和1不是素数。
 {
  if(arr[k]==1)               //里面的数据不是零 说明下标是素数
  {
   printf("%d  ",k);       //打印下标。
  }
 }
 free(arr);
 arr=NULL;
}
//2.for循环判断1-100内的素数
void prime2(int n)
{
 int i,j;
 for(i=2;i<=n;i++)
 {
  for(j=2;j<i;j++)
  {
   if(i%j==0)
   {
    break;//不是素数
   }
  }
  if(i==j)//被自己整除
  {
   printf("%d  ",i);
  }
 }
}
//判断一个数是否为素数
bool IsPrime(int n)
{
 if(n==1)
 {
  return false;//1不是素数
 }
 for(int i=2;i<n;i++)
 {
  if(n%i==0)
  {
   return false;
  }
 }
 return true;
}

展开阅读全文

没有更多推荐了,返回首页