如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为高明企业提供专业的成都网站建设、网站建设,高明网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
int flag=0;
if(m==2){ //先判断是不是2
flag=1;
}
else{
for(int i=2;i=sqrt(m);i++){
flag=1;
if(m%i==0){ //不是素数
flag=0;
break;
}
}
}
return (flag==1)?m:-1; //判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
C语言-寻找素数
附代码:
#includestdio.h
#includemath.h
int main()//原理:设ab=c,ab,则有a根号cb。若设a恒小于根号c,则只需判断a是否为因数
{
int a, b;
printf("请按从小到大输入两个素数:");
scanf_s("%d %d", a, b);
int n = 0,m=0,sum = 0;
double i, j;//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数
for (i = a; i = b; i++)
{
m = 0;
int c = int(pow(i, 0.5));
for (j = 2; j = c; j++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++;//m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数
}
}
if (m==0)
{
printf("找到素数:%d\n", int(i));
n++;
sum = sum + i;
}
}
printf("大于等于%d,小于等于%d的素数的个数为:%d\n", a, b, n);
printf("它们的和为:%d", sum);
return 0;
}
除2以外,素数皆为奇数,所以对2单独处理,从3开始,将100以内的奇数逐一进行素数考察,是则输出,不是则跳过。另设一计数变量控制换行,每输出5个素数添加一个回车。代码如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int i,n,t;
pr
#include
#include
main()
{
int a,i,flag,count=0;
for(a=1;a =100;a++)
{
flag=0;
for(i=2;i
#include int main()
{
int i,n,k,b;
for(i=1,b=1;i=100;i++)
{
for(n=2;n {
k=i%n;
if(k==0)
break;
}
扩展资料:
C语言注意事项:
1、预编译命令不是语言语句,不使用分号,不占用运行时间。
2、在IDE中通常包括编辑器,编译器,汇编器和链接器,在这个过程中是语言等级逐级降低的过程,从最高级的c语言到中级语言汇编语言再到低级语言机器语言,编辑器生成文件为.c文件,编译器生成的文件为obj汇编器生成的文件为.0文件,链接器生成的是exe文件。
3、注意 return和exit的区别, return是让本函数运行结束,而exit是让本程序运行结束。
4、在指针定义时,一定要进行初始化,否则就会出现意想不到的错误,如果不能找到对应地址赋值,那就赋给NULL(注意大写)。
5、gets可以 scanf办成办不成的事,就是可以接受空格,puts在最后会输出一个换行。
1、首先需要打开vs软件工程,准备好一个空白的C语言文件,引入头文件,主函数中暂时没有内容:
2、这里开始编写代码,这里判断素数需要用到平方根,所以要在头文件中引入math库,然后编写判断素数的函数,函数有唯一的参数n,代表素数。判断的依据是素数n只要不能被 2 到根号下n之 间任一整数整除,则n必定是素数,最后在主函数中调用判断素数的函数即可:
3、最后,编译运行程序,在弹出的命令行中输入17这个素数,程序的打印结果是17是素数,证明了程序的正确性。以上就是用C语言判断素数的流程: