1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

题目:判断101到200之间的素数。

【分析】素数是除了1和它本身之外,不能被其他整数整除的数。用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。由此可构建判断素数的函数:

/*********************************************************************************
* Function Name    : isPrime,判断一个数是不是素数
* Parameter       : n:一个int型的数
* Return Value     : TRUE:素数  FALSE:约数或者非大于1的数
* Function Explain : 
* Create Date      : 2018.2.25
**********************************************************************************/
BOOL isPrime(int n)
{
  int k, i;
  
  if (n <= 1)  
    return FALSE;  // 传入的数小于等于1则退出函数
  k = (int)sqrt((double)n);
  for (i = 2; i <= k; i++)
  {
    if(n%i == 0)      
    {
      return FALSE;  //约数
    }
  }
  return TRUE;  //素数
}

函数传入的参数n就是需要判断的数,首先这个判断这个数是不是小于1,若其小于1则退出函数,否则函数继续往下执行。变量k用于保存n的算术平方根,然后在2~sqrt(n)的范围内判断,若n能被这范围内的数整除则说明n是约数,否则n为素数。

示例程序:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>  

typedef enum{FALSE=0,TRUE=!FALSE,}BOOL;

BOOL isPrime(int n);

/*********************************************************************************
* Function Name    : main主函数
* Parameter       : NULL
* Return Value     : 0 
* Function Explain : 
* Create Date      : 2018.11.28
**********************************************************************************/
int main(int argc, char *argv[])
{
  int tmp,i,num=0;
  BOOL prime;
  printf("101到200之间的素数有:\n");

  for (i = 101; i < 200; i++)
  {
    prime = isPrime(i);
    if(prime)
    {
      num++;
      printf("%-3d\t",i);
      if(num%5 == 0) // 每行5个数
      {
        printf("\n");
      }
    }
  }
  printf("\n"); 
  printf("101到200之间素数的总数有:%d\n",num);
  printf("\n"); 
  system("pause");  // 使程序暂停,即会显示“请按任意键继续. . .”
}

/*********************************************************************************
* Function Name    : isPrime,判断一个数是不是素数
* Parameter       : n:一个int型的数
* Return Value     : TRUE:素数  FALSE:约数或者非大于1的数
* Function Explain : 
* Create Date      : 2018.11.28
**********************************************************************************/
BOOL isPrime(int n)
{
  int k, i;
  
  if(n<=1)  
    return FALSE;
  k = (int)sqrt((double)n);
  for (i = 2; i <= k; i++)
  {
    if(n%i == 0)      //约数
    {
      return FALSE;
    }
  }
  return TRUE;  //素数
}

程序执行结果:

C语言 | 判断素数_C语言

system("pause");这条语句就是使程序暂停,包含到头文件stdlib.h中。

每天进步一点点,关注小编,每天和小编一起打卡学习吧!C语言 | 判断素数_编程开发_02