c语言怎么判断一个数是素数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎么判断一个数是素数相关的知识,希望对你有一定的参考价值。
这个错在哪
判断是否是质数最直观和简单的方法就是从2开始直接除,能除尽(余数为0)就不是质数。则C语言实现为:int isprime(int m)
int i;
for(i=2;i<m;i++)
if(m%i==0)
return 0;
else
return 1;
该算法的时间复杂度O(n)。
可以改进一下,根据如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。用反证法可以证明一下。假设x是n的最小质因数,则存在n/x=p。p>x,x*p=n。如果x不小于等于它的平方根,则x*x>n,而p>x,故x*p>n,假设不成立。合数是与质数相对应的自然数。一个大于1的自然数如果它不是合数,则它是质数。也就是说如果一个数能被它的最小质因数整除的话,那它肯定是合数,即不是质数。所以判断一个数是否是质数,只需判断它是否能被小于它开跟号后的所有数整除,因此,这样做的运算少了很多,降低了时间复杂度。追问
#include
#include
int main()
int i,k,m;
int n=0;
scanf("%d",m);
k=sqrt(m)+0.01;
for(i=2;i<k;i++)
if(m%i==0)
printf("This is not a prime");
break;
if(i==k+1)
printf("This is a prime");
return 0;
我这个错在哪
参考技术A 不要拍照,直接copy代码上来看吧。。。。看不清。。。追问#include
#include
int main()
int i,k,m;
int n=0;
scanf("%d",m);
k=sqrt(m)+0.01;
for(i=2;i<k;i++)
if(m%i==0)
printf("This is not a prime");
break;
if(i==k+1)
printf("This is a prime");
return 0;
C语言试题六十九之请编写函数判断一个数是不是素数
1、 题目
编写函数:判断一个数是不是素数
素数:素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
2 、温馨提示
C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。
以上是关于c语言怎么判断一个数是素数的主要内容,如果未能解决你的问题,请参考以下文章