当前位置: 主页 > 科技企业 >哈利波特全集下载_在编程中怎样确定一个数是不是素数 >

哈利波特全集下载_在编程中怎样确定一个数是不是素数

在编程中怎样确定一个数是不是素数


素数是这样数,它除了能表示为它自己和1的以外能表示为任何其它两个整数的乘积。,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
有的数,如果单凭印象去捉摸,是无法确定它到底是不是素数的。有些数则可以马上说出它不是素数。一个数,不管它有多大,只要它的个位数是2、4、5、6、8或0,就不可能是素数。此外,一个数的各位数字之和要是可以被3整除的话,它也不可能是素数。但如果它的个位数是1、3、7或9,而且它的各位数字之和不能被3整除,那么,它就可能是素数(但也可能不是素数)。没有任何现成的公式可以告诉你一个数到底是不是素数。你只能试试看能不能将这
个数表示为两个比它小的数的乘积。
找素数的一种方法是从2开始用“是则留下,不是则去掉”的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除、因而不是素数的数都去掉。在留下的最小的数当中,排在2后面的是3,这是第二个素数,因此应该把它留下,然后从它开始往后数,每隔两个数删去一个,这样就能把所有能被3整除的数全都去掉。下一个未去掉的数是5,然后往后每隔4个数删去一个,以除去所有能被5整除的数。再下一个数是7,往后每隔6个数删去一个;再下一个数是11,往后每隔10个数删一个;再下一个是13,往后每隔12个数删一个。……就这样依法做下去。
你也许会认为,照这样删下去,随着删去的数越来越多,最后将会出现这样的情况;某一个数后面的数会统统被删去崮此在某一个最大的素数后面,再也不会有素数了。但是实际上,这样的情况是不会出现的。不管你取的数是多大,百万也好,万万也好,总还会有没有被删去的、比它大的素数。
事实上,早在公元前300年,希腊数学家欧几里得就已证明过,不论你取的数是多大,肯定还会有比它大的素数,假设你取出前6个素数,并把它们乘在一起:2*3*5*7*11*13=30030,然后再加上1,得30031。这个数不能被2、3、5、7、11、13整除,因为除的结果,每次都会余1。如果30031除了自己以外不能被任何数整除,它就是素数。如果能被其它数整除,那么30031所分解成的几个数,一定都大于13。事实上,30031=59*509。
对于前一百个、前一亿个或前任意多个素数,都可以这样做。如果算出了它们的乘积后再加上1,那么,所得的数或者是一个素数,或者是比所列出的素数还要大的几个素数的乘积。不论所取的数有多大,总有比它大的素数,因此,素
数的数目是无限的。
随着数的增大,我们会一次又一次地遇到两个都是素数的相邻奇数对,如5,7;11,13;17,19;29,31;41,43;等等。就数学家所能及的数来说,它们总是能找到这样的素数对。这样的素数对到底是不是有无限个呢?谁也不知道。数学家认为是无限的,但他们从来没能证明它。这就是数学家为什么对素数感兴趣的原因。素数为数学家提供了一些看起来很容易、但事实却非常难以解决的问题,他们目前还没能对付这个挑战哩。

迄今为止,人类发现的最大的素数是 224036583-1,这是第 41 个 梅森(Mersenne)素数。

素数也叫质数,是只能被自己和 1 整除的数,例如2、3、5、7、11等。2500 年前,希腊数学家欧几里德证明了素数是无限的,并提出少量素数可写成“2 的n次方减 1”的形式,这里 n 也是一个素数。此后许多数学家曾对这种素数进行研究,17 世纪的法国教士马丁·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此后人将“2的n次方减1”形式的素数称为梅森素数。

第19~41个梅森素数
序号素数位数发现人时间
41 224036583-1 7235733 John Findley 2004
40 220996011-1 6320430 Michael Shafer 2003
39 213466917-1 4053946 Michael Cameron 2001
38 26972593-1 2098960 Nayan, Woltman, Kurowski 1999
37 23021377-1 909526 Clarkson, Woltman, Kurowski 1998
36 22976221-1 895932 Spence, Woltman1997
35 21398269-1 420921 Armengaud, Woltman1996
34 21257787-1 378632 Slowinski & Gage 1996
33 2859433-1 258716 Slowinski & Gage 1994
32 2756839-1 227832 Slowinski & Gage 1992
31 2216091-1 65050 David Slowinski 1985
30 2132049-1 39751 David Slowinski 1983
29 2110503-1 33265 Welsh & Colquitt 1988
28 286243-1 25962 David Slowinski 1982
27 244497-1 13395 Slowinski & Nelson 1979
26 223209-1 6987 L. Curt Noll 1979
25 221701-1 6533 Nickel & Noll 1978
24 219937-1 6002 Bryant Tuckerman 1971
23 211213-1 3376 Donald B. Gillies 1963
22 29941-1 2993 Donald B. Gillies 1963
21 29689-1 2917 Donald B. Gillies 1963
20 24423-1 1332 Alexander Hurwitz 1961
19 24253-1 1281 Alexander Hurwitz 1961

1995 年,美国程序设计师乔治·沃特曼整理有关梅森素数的资料,编制了一个梅森素数计算程序,并将其放置在因特网上供数学爱好者使用,这就是“因特 网梅森素数大搜索”计划。目前有6万多名志愿者、超过20万台计算机参与这项计划。该计划采取分布式计算方式,利用大量普通计算机的闲置时间,获得相当于 超级计算机的运算能力,第 37、38 和 39 个梅森素数都是用这种方法找到的。美国一家基金会还专门设立了 10 万美元的奖金,鼓励第一个找到超过千万位素数的人。for(j=2;j<=i;j++)
{
if(j==i) printf("%d\n",i);
if(!(i%j))break;
}素数只能被1和它本身整除,数i是否为素数,可以用一个数j对它进行测试,如果 i%j == 0j 又不是 1 或 它本身, 这个数就不是素数;如果 i%j != 0 ,那么 j 一直增加下去,看 j 能不能有一个值可以整除 i , 如果 j是一个素数,那么j可以一直增加到 i 为止,这样就可以看出它是不是素数了。blog/static/111432042006102810525653/
c语言编程:设计一个函数用于判断一个数是否为素数,如果是素数返回1,否则返回0。

源程序代及算法解释:#define _CRT_SECURE_NO_WARNINGS
#includeint Func(int m)//函数
{
int n = 2;
while (n <= m && (m%n))//判断是否能被其他除
n++;
if (m == n)
return 1;
else
return 0;
}
int main()
{
int M_num;//定义变量
printf("请输入需要判断的数: ");//文字提示
scanf("%i", &M_num);//循环输入数组元素
int i = Func(M_num);//判断是否是素数
if (i == 1)//输出结果
printf("输入的数是素数");
if (i == 0)
printf("输入的数不是素数");
printf(" ");
return 0;
}
程序运行结果如下:

扩展资料:输出1-100之间的所有素数程序如下:#includeint PrimeNumer(int x) //定义一个函数判断
{
assert(x > 0); //判断
int i; //被除数
for (i = 2; i < x; i++)
{
if (x%i == 0)
{
return 0; //表示正常终止
}
}
return 1; //只是给主调函数一个标志,说明他的执行过程中遇到异常情况。 然后就返回主调函数来处理,继续执行。
}
int main()
{
int i,a;
int count = 0;
for (i = 2; i < 101; i++)
{
if (PrimeNumer(i)) //调用函数来判断
{
count++; //加入了一个计数器
printf("%d ", i);
}
}
printf("素数出现的次数%d", count);
system("pause");
return 0;
}

#include
#include
intIsprime(unsigned int Num)
{
unsigned int m,i,k;
k=sqrt(Num);
for(i=2;i<=k;i++)
if(Num%i==0)
return 0;
return 1 ;
}

返回1 是素数
返回0 就不是
: 判断2 到的开方都不能除断,素数。本回答被提问者采纳#include
int isprime(int n)
{int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)return 0;
return 1;
}
c语言编程:设计一个函数用于判断一个数是否为素数,如果是素数返回1,否则返回0。

源程序代码以法解释如下:#define _CRT_SECURE_NO_WARNINGS
#includeint Func(int m)//判断函数
{
int n = 2;
while (n <= m && (m%n))//判断是否其他数整除
n++;
if (m == n)
return 1;
else
return 0;
}
int main()
{
int M_num;//定义
printf("请输入需要判断: ");//文字提示
scanf("%i", &M_num);//循环输入数组元素
int i = Func(M_num);//判断是否是素数
if (i == 1)//输出结果
printf("输入的数是素数");
if (i == 0)
printf("输入的数不是素数");
printf(" ");
return 0;
}
程序运行结果如下:

扩展资料:输出1-100之间的所有素数程序如下:#includeint PrimeNumer(int x) //定义一个函数判断
{
assert(x > 0); //判断
int i; //被除数
for (i = 2; i < x; i++)
{
if (x%i == 0)
{
return 0; //表示正常终止
}
}
return 1; //只是给主调函数一个标志,说明他的执行过程中遇到异常情况。 然后就返回主调函数来处理,继续执行。
}
int main()
{
int i,a;
int count = 0;
for (i = 2; i < 101; i++)
{
if (PrimeNumer(i)) //调用函数来判断
{
count++; //加入了一个计数器
printf("%d ", i);
}
}
printf("素数出现的次数%d", count);
system("pause");
return 0;
}

#include
#include
intIsprime(unsigned int Num)
{
unsigned int m,i,k;
k=sqrt(Num);
for(i=2;i<=k;i++)
if(Num%i==0)
return 0;
return 1 ;
}

返回1 表示数
返回0 是
算法: 判断2 到该数的都不能除断,则为素本回答被提问者采纳#include
int isprime(int n)
{int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)return 0;
return 1;
}
编程实现:从键盘输入一个整数,判断是否是素数,若为素数输出1,否则输出0。

你的要求编写的判断是素数的C语言程序如#include

intmain(){

inti,n;

printf("请输入一整数:");

scanf("%d",&n);

for(i=2;i
if(n%i==0)break;

}

if(i>=n){

printf("1");

}else{

printf("0");

}

return0;

}

追问

谢谢!追答

如果你对我的回答感到满意请采纳我的回答.

//判断素数是1否打0
#include
intmain()
{
inti=0,n=0;
printf("请输入一个正整数:");
scanf("%d",&n);
if(n>=2)
{
for(i=2;i{
if(n%i==0)
break;
}
if(i>=n)
{
printf("1");
}
else
{
printf("0");
}

}
else
printf("0");

return0;
}


上一篇:
下一篇:

中国科学技术馆|科技馆|中国科技馆
科技内涵|科技企业|科技园区|科技导读|网站地图