C语言 | 判断素数

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;  //素数
}

程序执行结果:

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

每天进步一点点,关注小编,每天和小编一起打卡学习吧!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式大杂烩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值