新手求教 c语言素数判断算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手求教 c语言素数判断算法相关的知识,希望对你有一定的参考价值。
这是我的代码,不知道当n=77这种的非素数该怎么判断,上网搜了一下代码,发现网上的都差不多是这种
他的for循环里面我看不懂,为什么没有if没有
请教各位大神向我解释一下网上的 代码,并且用我自己的代码给我举举例子 人笨没办法%>_<%
//判断一个数num是否为素数
#include <stdio.h>
int main()
int num,i,n=0;
while(1)
scanf("%d",&num);//输入一个数num
if(num==2) printf("%d是素数\\n",num);
else if(num>=3)
for(i=1;i<=num;i++)
if((num%i)==0) n++;
if(n==2) printf("%d是素数\\n",num);
else printf("%d不是素数\\n",num);
n=0;
else printf("%d不是素数\\n",num);
return 0;
参考技术A 就是判断从2开始到一个数的平方根中若不能被他整除,那么该数就是素数;网上代码是若能整除则跳出,所有条件不能整除则输出是素数。
他是只需要一种判断,不满足则跳出,那么跳出后i < n,所以可以用。
你的代码思路没有错,只不过网上没有使用的优化的算法,如果你想弄明白怎么优化,那你需要在数学中找答案 参考技术B 网上的代码意思是:n就是你输入的任意数,判断它是否是素数的方法是用大于2小于n的数去除n,若能整除即不是素数,跳出循环;若数一直增加到n+1都没有被整除,即可输出“素数”。
你的源程序:3是素数,很简单,所以用if来提醒输入大于3的数,你的只是另一种素数算法,是优化的算法,更快。因为只需用2到根号a去判断。本回答被提问者采纳 参考技术C 第一个if:如果输入的数n,能够整除小于n的某一个数i,证明数n有约数i,此时break后,i的值一定是小于n的。
第二个if:如果i的值比n大,说明上述的for循环没有进入到第一个if里面,所以从2到n-1之间没有一个数是n的约数。所以可以判定n是素数。
判断素数C语言案例-循环
素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
思路:因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
#include <stdio.h>
int main()
{
int a=0; // 默认为素数,标记1
int num=0; // 输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(int i=2;i<num;i++)
{
if(num%i==0)
{
a=0; // 如果整除,标为0,说明不是素数
}
}
if(a==1)
{
printf("%d是素数。\n", num);
}
else
{
printf("%d不是素数。\n", num);
}
return 0;
}
同时我们开设了可视化课程,主要针对低年级且未接触过编程的新同学,课程内容多数改编自经典C语言例题,学习起来更easy!
可视化班级课程:求1-100内所有素数
连云港唯一一家正规编程机构,非拼装类机器人!南邮、东南教授研发的从入门到参加全国信息学奥林匹克竞赛课程体系!优质竞赛教研团队!
www.lygnck.com
搜索小程序查看课程体系:青少年编程与机器人教育1
徐老师:17305185500
微信:18651728829
以上是关于新手求教 c语言素数判断算法的主要内容,如果未能解决你的问题,请参考以下文章