C语言中闰年与素数算法
来源:互联网 发布:着魔耽美网络剧百度云 编辑:程序博客网 时间:2024/04/23 16:56
C语言判断闰年:
if((year%4==0&&year%100!=0)||(year%400==0))
C语言素数算法:
分析:
① 要判断一个数是不是素数,首先要知道什么是素数。回忆一下数学里的知识,什么是素数?只能被自身和1整除的正整数是素数。1既不是素数,也不是合数;2是最小的素数,也是唯一一个是偶数的素数。
② 判断一个正整数m是否为素数有多种方法。
方法1:让m依次被2,3,…,m-1除,如果m不能被2~m-1中的任何一个整数整除,则m是素数。
方法2:让m依次被2,3,…,m/2除,如果m不能被2~m/2中的任何一个整数整除,则m是素数。
方法3:让m依次被2,3,…,sqrt(m)除,如果m不能被2~sqrt(m)中的任意一个整数整除,则m为素数。sqrt(m)为m的平方根。
其中最后一种方法判断速度最快,因此这里采用最后一种方法。
③ 判断一个整数是不是素数,由于需要一次一次地做除法,所以要使用循环。
程序如下:
#include "math.h"
main( )
{ int m,i,k,n=0;
for(m=101; m<=200; m+=2)
{ k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) break;
if (i>k)
{printf("%5d",m);
n=n+1;
if (n%10==0) printf("\n");
}
}
}
运行结果为:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
请思考:请编程求2000以内的所有素数
又一算法如下:
void main(){int n,i,k; printf("输入大于等于2的整数:n\n"); scanf("%d",&n); k = (int )sqrt(n); for(i = 2; i <= k;i++)if(n % i == 0) break; if(i > k)printf("Prime.\n"); elseprintf("Not a prime\n"); }素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)这里给出的是一个更快速的方法.要判断一个数是否为素数,只要判断比它开根号后的数小的数,能否把它整除.为什么可以这样做呢.从百度得到的答案如下:如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。例如21,它可以除尽7,而它同样可以除尽3。所以判断21是否质数,只需要判断21是否可以除尽2和3就可以了。5和7和11就不需要判断了。想来就是这样,例如21.根号21乘根号21等于21.则当一个比根号21的数大的数乘另一个数得到21.另一个数必然小于根号21.由此可以得到一个较快的素数判断算法.
- C语言中闰年与素数算法
- 【C语言】判断闰年+判断素数
- C语言实现判断素数,回文数,水仙花数,闰年
- c语言练习 求素数 乘法表 判断闰年
- C语言 之 素数算法
- C语言:判断闰年
- C语言-判断闰年
- C语言判断闰年
- 【C语言】判断闰年
- c语言 计算闰年
- C语言乘法口诀表,100-200间素数,1000-2000的闰年。
- 求素数算法(C语言)
- C语言 求素数、排序算法
- c编程之乘法表+素数+闰年
- 闰年、素数
- C语言判断闰年问题
- C语言闰年判断函数
- 用c语言判断闰年
- iphone ios 屏幕,statusbar,状态栏,标签栏尺寸,高度
- 查找目录下文件中是否包含某字符串的shell脚本
- 软件测试自动化感想
- 我的第一个游戏项目--残月夜
- (C语言)单链表的链式实现(数据结构二)
- C语言中闰年与素数算法
- Android 之 内存管理
- MPBGP/MPLS/VPN 虚拟环境配置
- IE6-8 火狐兼容的IFRAME写法
- isstream 自动分隔字符串
- 开始记录工作
- 黑马程序员-代理模式总结
- 学习使用Git和Github
- 设备驱动模型