【C语言】如何判断一个数字是否为素数(质数)? 您所在的位置:网站首页 c语言质数判断代码 【C语言】如何判断一个数字是否为素数(质数)?

【C语言】如何判断一个数字是否为素数(质数)?

2023-09-17 00:44| 来源: 网络整理| 查看: 265

#函数

文章目录 如何判断素数方法1---试除法代码改造1-1方法2---开平方法两个方法分别的弊端试除法开平方法 感谢你看到最后

如何判断素数

题目要求:输出100-200的素数

首先我们要知道什么是素数(质数),以防有人忘记(比如刚学开始学c的我就忘记了)

素数(质数)只能被1和它自己整除

7只能被1和7整除,是素数9能被3整除,不是素数 方法1—试除法 #include int main() { int i=0; int count=0; for(i=100;i if(i%j==0)//i可以整除j,i不是素数 { break; } } if(j==i)//i只能整除它自己,是素数 { count++; printf("%d ",i); } } printf("\ncount=%d\n",count);//计算100-200之间有几个素数 return 0; }

image-20211030125259140

这个代码比较死,只是输出了100到200之间的素数,完成了题目的要求

我们可以把它改造成输入一个数字,判断是否是素数的形式

代码改造1-1 用户输入一个数字代码判断是否为素数是,输出“是素数”以及用户输入的值不是,输出“不是素数” #include int main() { int i=0; int j=0; scanf("%d",&i); for(j=2;j printf("不是素数\n"); break; } } if(j==i) { printf("是素数,i=%d\n",i); } }

结果如下:

image-20211030105243154

image-20211030105306738

上面的这串代码能很好地完成我们的需求,但它还有优化的空间

方法2—开平方法

方法1中的for循环为j int j=0; for(j=2;j break; } } if(j>sqrt(i)) { printf("%d ",i); } } return 0; }

image-20211030125226854

将这个代码改造成1-1那种形式也不难,自己试试吧!

两个方法分别的弊端 试除法

该方法会错过1

开平方法

该方法会错过2

感谢你看到最后

如果这篇博客对你有帮助,请点赞支持一下,万分感谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有