素数的电脑编程 | 一千以内的素数编程

素数的电脑编程 | 一千以内的素数编程

1. 一千以内的素数编程

素数::103,109,113,131,137

2. 编程找出10000以内的素数

10000以内的共1229个质数。

质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。

1、如果 为合数,因为任何一个合数都可以分解为几个素数的积。

而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。

3. 编程实现求1-1000中所有素数

可以编写一个素数考察函数,在主函数中调用该函数对1000以内的整数穷举考察求解,也可以在主函数中直接对1000以内的整数穷举考察求解。这里提供一个用筛选法求解的代码,思路是声明一个大于等于1000个元素的char型(int型当然也可以,这里只是为了减少空间开销)数组并全部初始化为1,对下标不是素数的元素清0,最后依次输出不为0元素的下标便是题解。为提高操作效率,用2~33间(33^2>1000了,所以考察已充分了)的素数去除大于这个素数而小于等于1000的不为0的数,能整除的便将这个下标的元素清0。当用小于33的最大素数考察完毕后,依次输出数组中不为0的元素下标即可。代码如下:

#include "stdio.h"int main(int argc,char *argv[]){int i,j;char m[1001];//声明char型数组作为筛选对象for(m[0]=m[1]=0,i=2;i<=1000;m[i++]=1);//m[0]和m[1]赋0,其余赋1备选i=2;//考察次数2~33,用期间的素数去除大于i且小于等于1000间不为0的数while((j=i)<33){while(!m[++j]);//取j为大于i的第一个不为0的数为起始考察对象while(j<=1000){if(j%i==0)//这个数若能被小于它的素数整除则以它为下标的元素清0m[j]=0;while(!m[++j]);//下一个不为0的数为考察对象}while(!m[++i]);//2~33间的下一个素数}for(j=i=0;i<=1000;i++)//以下是输出if(m[i])//不为0的数组元素的下标便是素数printf(++j%20 ? "%4d" : "%4d\n",i);//每行输出20个if(j%20)printf("\n");return 0;}

运行结果如下:

4. 一到一千的素数程序

1到100可逆素数:2 3 5 7 11 13 17 31 37 71 73 79 97

可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。

算法思想:最简单的方法就是从1000到9999逐个验证,如果它的反序数也是一个素数,则这个数是一个可逆素数。在验证的过程中可以利用整除和求余分解出个位,十位,百位,千位,则易得它的反序数,进而可验证反序数是否是素数。

5. 编程输出一千以内所有的素数

定义一个求判断素数的函数,调用此函数对1~100中2和大于2的奇数进行判断,是素数的输出,举例代码如下:

#include "stdio.h"int prime(int n){//判断n是否为素数int i;if(n>2 && !(n&1) || n<2)return 0;for(i=3;i*i<=n;i+=2)if(!(n%i))return 0;return 1;}int main(int argc,char *argv[]){int n;for(n=2;n<100;n += n!=2 ? 2 : 1)if(prime(n))printf("%3d",n);printf("\n");return 0;}

6. 编程求解1000以内所有素数用什么算法

main(){ int t,i,j,k=0; for(int t= 500; t < 1000; t++) { for(i = 2; i < t/2; i++) { if(t % i == 0) break; } if(i == t/2 + 1) { if(k%6 == 0) printf("\n")

; else printf("%d ",t); k++; } } }

7. 一千以内的素数编程实例

一、规律记忆法

首先记住2和3,而2和3两个质数的乘积为6。1000以内的质数,一般都在6的倍数前、后的位置上。如5、7、11、13、19、23、29、31、37、41、43……只有25、35、49、55、65、77、85、91、95这几个6的倍数前后位置上的数不是质数,而这几个数都是5或7的倍数。由此可知:100以内6的倍数前、后位置上的两个数,只要不是5或7的倍数,就一定是质数。根据这个特点可以记住1000以内的质数。

二、分类记忆法

我们可以把1000以内的质数分为五类记忆。

第一类:20以内的质数,共8个:2、3、5、7、11、13、17、19。

第二类:个位数字是3或9,十位数字相差3的质数,共6个:23、29、53、59、83、89。

第三类:个位数字是1或7,十位数字相差3的质数,共4个:31、37、61、67。

第四类:个位数字是1、3或7,十位数字相差3的质数,共5个:41、43、47、71、73。

第五类:还有2个持数是79和97

8. 编程一百以内的素数

输出100以内所有素数的程序如下:

#include <stdio.h>

int main(void)

{

int i,j,k;

printf("%d\n",2);

for(i=1;i<=100;i+=2)

{

for(j=2;j<i;j++)

if(i%j==0) break;

if(i==j)

printf("%d\n",i);

}

return 0;

}

9. 编程1-100所有素数

素数也就是质数,质数就是指那些除了1和它本身没有其他因数的数。

在小学五年级,最好能把一百以内的质数,或者说素数记下来。下面就来列举一下一百以内的素数: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。 

要注意1既不是质数也不是合数!

10. 编程100到1000之间有多少个素数

#include #include int fun(int n) //子函数判断是否为素数{ if(n==1) return 1; for(int i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1; } void main() { int count=0;printf("100-300的素数有:\n"); for(int i=100;i<=300;i++) { if(fun(i)) { count++;printf("i=%d ",i); if(count%5==0)//五个一行输出素数printf("\n");}} }

11. 编写一个程序求100以内的素数

操作步骤

1、打开Excel软件;

2、依次输入以下数据: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;3、现在就制作好了100以内的素数表。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部