C语言输入一个整数,判断是否是质数

输入一个整数,判断是否是质数我们学到循环的。。while和dowhile这个问题是在这里的谁能帮我解决下谢谢还有就是C语言觉得好难哦有什么好点的办法学吗... 输入一个整数,判断是否是质数
我们学到循环的。。while 和 do while

这个问题是在这里的 谁能帮我解决下 谢谢

还有就是C语言 觉得好难哦有什么好点的办法 学吗
展开
 我来答
ninstein
推荐于2018-03-19 · 超过10用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
单看素数判断函数,楼上的算法效率已经很高了,但是 For 循环条件 i * i <= n 效率并不是想象的那么高,由于每次循环i都是变化的因此每次for循环的表达式判断都有一次乘法和比较运算 如果改成这样就不会了 i <= sqrt(n) 虽然用了一次比较耗时的开方运算但是由于编译器的优化,开方运算只在整个判断素数函数中执行一次

修改后代码为
#include <stdio.h>
#include <math.h>

int isPrime(int n)
{
int i = 2;
for( ; i <= sqrt(n); i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}

int main(void)
{
int i = 2;
for( ; i < 100; i++)
if(isPrime(i))
printf("%d\n", i);
return 0;
}

BTW:当然,如果是求批量的素数的话,这个算法效率也是很低的,楼主可以去搜索素数求法的其他算法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dielsalder
2008-03-23 · TA获得超过3854个赞
知道大有可为答主
回答量:1864
采纳率:50%
帮助的人:2754万
展开全部
#include <stdio.h>

int isPrime(int n)
{
int i = 2;
for( ; i * i <= n; i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}

int main(void)
{
int i = 2;
for( ; i < 100; i++)
if(isPrime(i))
printf("%d\n", i);
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式