本文目录一览:
C语言判断一个数是否是质数
根据质数的定义,在判断一个数n是否是质数时,只要用1至n-1去除n,看看能否整除即可。
还有更好的办法:先找一个数m,使m的平方大于n,再用小于等于m的质数去除n(n为被除数),如果都不能整除,则n必然是质数。如我们要判断1993是不是质数,50*501993,那么只要用1993除以50的质数看是否能整除,若不能即为质数。100以内的质数有25个,还是比较好记的,只要记熟100以内质数,就可以快速判断10000以内的数是不是质数。
100以内的质数有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97,在100内共有25个质数。
只有1和它本身两个因数的自然数,叫质数(或称素数)。(如:由2÷1=2,2÷2=1,可知2的因数只有1和它本身2这两个约数,所以2就是质数。与之相对立的是合数:“除了1和它本身两个因数外,还有其它因数的数,叫合数。”如:4÷1=4,4÷2=2,4÷4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4是合数。)
c语言怎么判断一个数是素数
判断是否是质数最直观和简单的方法就是从2开始直接除,能除尽(余数为0)就不是质数。则C语言实现为:
int isprime(int m)
{
int i;
for(i=2;im;i++)
if(m%i==0)
return 0;
else
return 1;
}
该算法的时间复杂度O(n)。
可以改进一下,根据如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。用反证法可以证明一下。假设x是n的最小质因数,则存在n/x=p。px,x*p=n。如果x不小于等于它的平方根,则x*xn,而px,故x*pn,假设不成立。合数是与质数相对应的自然数。一个大于1的自然数如果它不是合数,则它是质数。也就是说如果一个数能被它的最小质因数整除的话,那它肯定是合数,即不是质数。所以判断一个数是否是质数,只需判断它是否能被小于它开跟号后的所有数整除,因此,这样做的运算少了很多,降低了时间复杂度。
c语言判断质数
#includestdio.h
#include math.h
void main()
{ int zhi(int);
int j=0,b[20]={1,3,7,9},a[20]={2,3,5,7},c,l=4,d[20],n,g=0,h=0,i,N,s=10,z,f;
scanf("%d",N);
for(i=1;i=N-1;i++)
{
for(j=0;jl;j++)
{
n=a[j]*s;
f=n;
for(h=0;h4;h++)
{ n=n+b[h];
c=zhi(n);
if(c==1)
d[++g]=n;
n=f;
}
}
for(j=0;jg;j++)
a[j]=d[j+1];
l=g,z=g,g=0;
}
if(N==1)
printf("2\n3\n5\n7\n");
else
for(j=1;j=z;j++)
printf("%d\n",d[j]);
}
int zhi(int m)
{ int k,i,c=0;
k=(int)sqrt(m);
for(i=2;i=k;i++)
if(m%i==0)break;
if(ik) c=1;
return c;
}
C语言编程:判断某数是否是质数
#includestdio.h
int main(int argc,int argv[]){
int a,flag;
scanf("%d",a);/*输入一个数进行判断是否是质数*/
int isprime(int);/*这里是对将要调用的函数声明一下*/
flag=isprime(int);
if(flag==1) printf("%d is isprime",a);
printf("%d is not isprime",a):
return 1;/*这里的语句代表调用函数成功*/
}
int isprime(int a){ /*功能函数,判断是否是素数*/
int i;
for(i=2;i=a/2;i++)
if(a%i==0) return 0;/*只要有一次相除为0,马上就能判断不是素数*/
return 1;/*否则经过循环之后,都没有相除为0呢,就说明一定是素数了*/
}
看到这里是不是有点疑惑了呢?我到百度查了一下,质数也称素数,你注意看就好。。不懂再追问。。
不过我想你看完之后你应该能明的了,我已经写得好详细了啦。。。。
c语言判断一个数是否为质数
#includestdio.h
int main()
{
int i, n;
while (scanf("%d", n) != EOF)
{
for (i = 2; i n; i++)
if (n % i == 0)
break;
if (i = nn1)
printf("%d是质数\n", n);
else
printf("%d不是质数\n", n);
}
return 0;
}