判断一个数是否是素数,有C语言怎么解决啊

请大家简单些啊,我是菜鸟... 请大家简单些啊,我是菜鸟 展开
 我来答
木小年17
2018-10-25
知道答主
回答量:8
采纳率:0%
帮助的人:7054
展开全部
判断是否是质数最直观和简单的方法就是从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的自然数如果它不是合数,则它是质数。也就是说如果一个数能被它的最小质因数整除的话,那它肯定是合数,即不是质数。所以判断一个数是否是质数,只需判断它是否能被小于它开跟号后的所有数整除,因此,这样做的运算少了很多,降低了时间复杂度。
时间淡化了什么
2018-03-30 · TA获得超过1.3万个赞
知道小有建树答主
回答量:45
采纳率:0%
帮助的人:2.5万
展开全部

判断一个数是否是素数,用C语言怎么解决?

#include<stdio.h> 

main() 

{  

char str1[80], str2[80];  

printf("输入一个字符串:");  

gets(str1);  

Cpy(str1[], str2[]);  

printf("输出一个字符串\n");  

puts(str2); 

}  

void Cpy(char s[],char c[]) 

{  

int i, j;  

for(i=0; s[i]?!= '\0'; i++)  

{   

if(s[i]= 'a'||s[i]= 'A'||s[i]= 'e'||s[i]= 'E'||  s[i]= 'i'||s[i]= 'I'||s[i]= 'o'||s[i]= 'O'||  s[i]= 'u'||s[i]= 'U')        

{   

s[i]=c[j];   

j++;  

}  

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善暄烃0iv
2010-11-25 · TA获得超过752个赞
知道小有建树答主
回答量:522
采纳率:0%
帮助的人:489万
展开全部
最笨的办法,将这个数用从2开始一直到这个数-1为止的所有数整除,只要被其中任何一个数整除后的余数是0,那么这个数就不是素数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luoguolong2660
2013-07-29 · TA获得超过157个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:246万
展开全部
首先是你的循环没加括号 作用范围有问题

再有就是你的逻辑问题 不能说余数不为0就不是素数,因为可能对其他数取余就是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-11-25
展开全部
//---------------------------------------------------------------------------

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

int isprime(const unsigned int n) /*判断n是否为素数 ,是则返回1,否则返回0*/
{
unsigned int st=(int)floor(sqrt(n));
unsigned int i;
for (i=2; i<=st; i++)
if (n%i==0) return 0;
return 1;
}
int main(int argc, char* argv[])
{
unsigned int x;
printf("x=");
scanf("%u",&x); /*输入一个无符号整数*/
printf(isprime(x)?"YES\n":"NO\n"); /*调用isprime()函数判断x是否为素数,并输出相应的结果*/
return 0;
}
//---------------------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式