c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...
判断一个数是否为素数
算法思想
设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqrt(x)=< b <= x-1,即a和b必有一个数在2~sqrt(x)范围内,反推之,若x不可被2~sqrt(x)范围内的任何整数整除,则x必为素数。
代码实现
#include
#include
int main()
{
int x;
scanf("%d", &x);
printf("%d是否为素数: %d", x, IsPrime(x));
return 0;
}
int IsPrime(int x)
{
int i, squareRoot;
//小于或等于1的整数均不为素数,预先排除
if(x <= 1) return 0;
//sqrt(x)为开平方函数,其返回结果为浮点数,通过类型强转获得小于该浮点数的最大整数
squareRoot = (int)sqrt(x);
for(int i = 2;i <= squareRoot;i++)
{
//通过取余函数,若除得余数为0,说明x可被i整除,x不为素数
if(x%i == 0) return 0;
}
return 1;
}
求100以内的所有素数
算法思想
若一个正整数x不为素数,则它必定可以由两个或两个以上的素数的乘积表示,并且这几个素数中必定有一个素数小于或等于sqrt(x),即x必定可以被2~sqrt(x)中的一个素数整除。设一个数组int a[101];,使a[2]=2,a[3]=3,.....,a[100]=100,排除此数组中所有可以被2~sqrt(100)中的素数整除的数(素数本身除外),则剩下的元素数则均为素数。那么如何求2~sqrt(100)中的素数呢,很简单,不用求,首先从最小的素数2开始,将3~100中可以被2整除的数组元素置为0,然后往下循环,下一个不为0的数组元素必定为素数,一直循环至下一个不为0的数组元素大于sqrt(100)时,数组中可以被2~sqrt(100)中的素数整除的数均被置为0了,则数组中剩下不为0的数均为素数
代码实现
#include
#include
#define N 100
int main()
{
int a[N+1];
SiftPrime(a, N);
PrintPrime(a, N);
return 0;
}
void SiftPrime(int a[], int n)
{
//初始化数组元素
for(int i = 2;i <= n;i++)
{
a[i]=i;
}
for(int i = 2;i <= sqrt(n);i++)
{
//当a[i]不为0时,必定为素数
if(a[i] != 0)
{
//将a[i]之后所有不为0的数除以a[i]求余,若可整除,则不为素数,置为0
for(int j = i+1;j <= n;j++)
{
if(a[j] != 0 && a[j]%a[i] == 0)
a[j] = 0;
}
}
}
}
void PrintPrime(int a[], int n)
{
for(int i = 2;i < n;i++)
{
if(a[i] != 0)
printf("%d\t", a[i]);
}
}
c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...相关推荐
- C语言试题六十九之请编写函数判断一个数是不是素数
1. 题目 编写函数:判断一个数是不是素数 素数:素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 2 .温馨提示 ...
- php判断一个数是不是素数,php用函数判断一个数是否素数
质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数. 首先知道什么是素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数的条件,来进行判断个数是否素数 ...
- c语言sqrt是int行吗,c语言 e=(int)sqrt(n)报错了,这句有什么问题?
满意答案 e=(int)sqrt(n);之所以出错,是因为你用的编译器所支持的sqrt函数有三种重载类型,分别如下: sqrt(double), sqrt(long double), sqrt(flo ...
- 同构数怎么判断_编程:输入1-100以内的一个整数,判断这个数是否是同构数。输出不同的情况...
[判断题]中性点直接接地系统发生接地故障时,在三相中将产生大小相等,相位相差120度的零序电压与零序电流.( ) [填空题]零序电流速断保护与反应相间短路的电流速断保护比较,其保护区________, ...
- java求1000以内的回文素数_C语言求回文素数
任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数.求 1000 以内的所有回文素数. 算法思想 实例的重点是判断一个数是否是回文素数.要输出 1000 以内的所有回文素数,首先应 ...
- C++ 判断一个数是不是素数
题目:判断一个数是不是素数,1 < N <= 50000 思路:判断n是否整除(求余是否等于0)大于1而小于sqrt(n)中的任何一个数,如果有则不是素数,否则是素数 实现代码: // 判 ...
- 如何判断一个数是否为超级素数
超级素数是指一个素数去掉其中一位或多位后,仍然是素数的数字.判断一个数是否为超级素数的方法可以通过迭代地去掉一位或多位,然后判断剩下的数字是否为素数.这个过程可以用while循环和range函数来实现 ...
- c语言一个数等于素数的乘积,C语言实现判断一个数是否为素数并求100以内的所有素数...
判断一个数是否为素数 算法思想 设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqr ...
- java语言 判断素数,C语言实现判断一个数是否为素数并求100以内的所有素数
判断一个数是否为素数 算法思想 设一个正整数x,sqrt(x)为x开平方后的值,若x不为素数,则x=a*b,a,b为2~x-1之间的整数,且当2=< a <= sqrt(x)时,必有sqr ...
最新文章
- 2019年上半年收集到的人工智能图神经网络干货文章
- Redhat7.2上编译Linux内核源码
- java jediscluster_方便jediscluster操作的工具类
- redis学习(一)
- C++求任意多项式的所有可能的近似根durand kerner roots(附完整源码)
- IT基础结构-1.DC-DNS-安装
- python 导出大量数据到excel_怎么在python中将大量数据导出到Excel文件
- java date linux,Java中Date,SimpleDateFormat
- Node的异步与java的异步_node.js和异步编程回文
- 神秘的数组初始化_I / O神秘化
- mongo:(3)windows上mongoDB安装
- .Net中的多态知识点
- 学web前端有什么计划?
- 程序员“放弃” Python!?发生了啥?
- win7向虚拟机linux传文件,如何实现主机windows与虚拟机liunx之间互传文件
- html项目_趣图:我是一个 HTML 开发者,你们看看我做的这个项目咋样?
- HDU - 3506 Monkey Party
- SDUT OJ 顺序表应用3:元素位置互换之移位算法
- 算法笔记_面试题_18.动态规划_模板及示例十几道(下)
- 3DMM之EOS 原理解析
热门文章
- Linux单系统手动分区教程,【教程贴】Linux类系统手动操作篇--标准分区硬盘和目录扩容...
- jquery 数组indexof_如何实现一个简化版的 jQuery
- mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
- ansible软件部署
- 7.3.8.1 - 并发多线程 死锁和递归锁 - 信号量
- CentOS 恢复 rm -rf * 误删数据(转)
- [转]数据科学家能力发展路线图
- 《LeetBook》leetcode题解(5):Longest Palindromic [M]——回文串判断
- 【转】Collections的copy()方法和ArrayList的大小问题
- 报名开始!第二届中国移动“梧桐杯”大数据应用创新大赛邀你夺52w大奖!