这篇文章给大家聊聊关于判断素数时为什么用sqrt吗,以及idea判断一个数是否为素数对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
用c语言编一个程序,判断一个数是否为素数
#include<stdio.h>
#include<math.h>
intmain()
{
inti,n,flag=0;
printf("请输入一个数:");
scanf("%d",&n);
if(n==1||n==0)
{
printf("不是素数!");
gotoloop;
}
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
{
printf("不是素数!");
flag=1;
break;
}
if(flag==0)
printf("n是素数!");
loop:
return0;
}
判断一个数是否是素数的程序讲解
素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数。
该代码的基本思路为:如果m不能被2~它的平方根中的任一数整除,m必定是素数。
代码解析如下:
main()
{
intm;//输入的整数
inti;//循环次数
intk;//m的平方根
scanf(%d,&m);//输入m
k=sqrt(m);//对m开方赋给k
for(i=2;i<=k;i++)//从2到k依次加1循环
if(m%i==0)break;//当m可以整除i时,退出,不整除,说明是素数
if(i>=k+1)
printf(%disaprimenumber\n,m);//i不小于k+1时,m是素数,否则,m不是素数
else
printf(%disnotaprimenumber\n,m);
}
扩展资料:
判断素数的程序代码的另一思路:判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
代码及解析如下:
#include<stdio.h>
intmain(){
inta=0;//素数的个数
intnum=0;//输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(inti=2;i<num;i++){
if(num%i==0){
a++;//素数个数加1
}
}
if(a==0){
printf("%d是素数。\n",num);
使用python判断101-200之间有多少个素数,并输出所有素数分别是哪些a
#include<stdio.h>//加载函数库
#include<math.h>//加载函数库
main()
{
intm,k,i,n=0;//定义变量mkin为整型,而且n的初始值为0
for(m=101;m<200;m+=2)//for循环从101到200,步进为2,因为偶数为非素数,使用步进为2,判断奇数中的素数
{
k=sqrt((double)m);//判断素数方法:m对2到m的开方的所有数都不能够整除,k取m的开方
for(i=2;i<=k;i++)//for循环从2到m的开方k
if(m%i==0)//m对i求余,求余为0则表示m能够别i整除
break;//如果m能够别i整除,则表示m为非素数,退出素数判断的循环
if(i>k)//判断i是否大于k,即当m为素数时,m不能够被2到k的数整除,则判断素数的循环不会中途退出,则循环执行完后i=k+1
{
printf("%4d",m);//输出素数
n++;//素数的个数+1
}
if(n%10==0)//输出10个素数则换行输出
printf("\n");//输出换行
}
printf("\n");//输出换行
}
idea判断一个数是否为素数
判断一个数是否为素数的方法如下:1.若该数小于2,则不是素数。2.若该数等于2,则是素数。3.若该数能被2整除,则不是素数。4.从3开始,依次判断该数能否被从3到sqrt(n)之间的奇数整除。4.1若能被某个数整除,则不是素数。4.2若不能被任何数整除,则是素数。
c语言中判断素数的方法
C语言判断素数(求素数)(两种方法)
素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。
思路1):因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
思路2):另外判断方法还可以简化。m不必被2~m-1之间的每一个整数去除,只需被2~之间的每一个整数去除就可以了。如果m不能被2~间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。
原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于,另一个大于或等于。例如16能被2、4、8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可。
两种思路的代码请看解析。
思路1)的代码:
#include<stdio.h>
intmain(){
inta=0;//素数的个数
intnum=0;//输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(inti=2;i<num;i++){
if(num%i==0){
a++;//素数个数加1
}
}
if(a==0){
printf("%d是素数。\n",num);
}else{
printf("%d不是素数。\n",num);
}
return0;
}
思路2)的代码:
#include<stdio.h>
#include<math.h>
voidmain(){
intm;//输入的整数
inti;//循环次数
intk;//m的平方根
printf("输入一个整数:");
scanf("%d",&m);
//求平方根,注意sqrt()的参数为double类型,这里要强制转换m的类型
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
//如果完成所有循环,那么m为素数
//注意最后一次循环,会执行i++,此时i=k+1,所以有i>k
if(i>k)
printf("%d是素数。\n",m);
else
printf("%d不是素数。\n",m);
return0;
}
两段代码的输出结果相同。
第一次运行结果:
输入一个整数:1
1是素数。
第二次运行结果:
输入一个整数:97
97是素数。
第三次运行结果:
输入一个整数:10
10不是素数。
好了,文章到这里就结束啦,如果本次分享的判断素数时为什么用sqrt吗和idea判断一个数是否为素数问题对您有所帮助,还望关注下本站哦!