判断101-200之间有多少个素数,并输出所有素数。
2015-12-26 13:28
387 查看
分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
这是老师给的题,sqrt是什么,不会用。
自己写的
sqrt是平方根函数。下面是百度的
数学论证-求素数为什么是用一个数分别去除2到sqrt(这个数)
n = a*b = sqrt*sqrt
=> a/sqrt = sqrt/b => a>=sqrt>=b 或 b>=sqrt>=a
所以只要遍历到sqrt.
比如64 = 8*8 = 2*32
你是没有必要遍历到32的,因为当你考察2的时候,32这种情况也就考察了。
下面用sqrt做一遍。
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,t=1,o=0;
for (i=101; i<=200; i++)
{
k=sqrt(i);
for (j=2; j<=k; j++)
{
if (i%j==0)
{
t=0;
break;
}
}
if (t)
{
printf("%d\t",i);
o++;
}
t=1;
}
printf("\n%d",o);
}
这是老师给的题,sqrt是什么,不会用。
自己写的
#include<stdio.h> main() { int i,j,t=0; for(i=101;i<=200;i++) { j=2; while(j<i) { if(i%j==0) break; j++; } if(i==j) { t++; printf("%d\t",i); } } printf("\n共有%d个素数",t); }
sqrt是平方根函数。下面是百度的
数学论证-求素数为什么是用一个数分别去除2到sqrt(这个数)
n = a*b = sqrt*sqrt
=> a/sqrt = sqrt/b => a>=sqrt>=b 或 b>=sqrt>=a
所以只要遍历到sqrt.
比如64 = 8*8 = 2*32
你是没有必要遍历到32的,因为当你考察2的时候,32这种情况也就考察了。
下面用sqrt做一遍。
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,t=1,o=0;
for (i=101; i<=200; i++)
{
k=sqrt(i);
for (j=2; j<=k; j++)
{
if (i%j==0)
{
t=0;
break;
}
}
if (t)
{
printf("%d\t",i);
o++;
}
t=1;
}
printf("\n%d",o);
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法