打印输出100-200之间的素数
2018-03-21 11:31
956 查看
打印输出100-200之间的素数,三种方法,下面一一介绍第一种,也是最原始的方法#include<stdio.h>int main()
{
int i = 0;
int j = 0;
printf("100-200之间的素数:");
for (i = 100; i <= 200; i++) //100-200之间的数
{
for (j = 2; j < i; j++)
{
if (i%j == 0) //判断是否为素数
{
break; //若i可以被j整除,则不是素数,跳出此循环继续下一个i循环。若不能被整除,继续循环j的循环,直到不能满足条件跳出,此时的i就是素数。 }
}
// 跳出j循环的两种可能:1.i可以被j整除,此时i不是素数 2.j循环循环完了即循环条件不能满足时,也没有可以被整除的数,第二种可能说明此时i就是素数
if (i == j) //j循环完了即循环条件不再满足for循环,此时还没有找到被整除的数,所以此时的i就是素数
{
printf("%d ", i);
}
}
return 0;
}
第二种方法,稍作优化#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int j = 0;
printf("100-200之间的素数:");
for(i=100; i<=200; i++) //100-200之间的素数
{
//任何一个不是素数的数都可以分解成比它的开方一个大一个小的两个数相乘的数。例如16,开方为4,则2和8就是比4一个 大一 个小的数,此时只需要判断这个数能不能被比它开方小的数整除,如果可以,就不是素数,不用再判断能不能整除比 它的开方大的数。
for(j=2; j<=sqrt(i); j++) //2到sqrt(i)之间的数。注意此时j应该<=sqrt(i) 不能只是小于。举个例子,例如9,如果只是小于,就会将9归为素数,而实际上9不是素数。
{
if(i%j==0)
{
break; //如果可以整除,跳出j的循环,继续下一个i的循环。如果不能整除,继续j的循环,直到条件不能再满足也没有找到可以被整除的数 ,此时的i就是素数。
}
}
//跳出j循环有两种可能:1.i不能被j整除,此时i不是素数。2.j的循环条件执行完也没有找到可以整除的数,此时i就是素数。
if(j>sqrt(i)) //j循环完了也没有找到可以整除i的数,表示此时的i就是素数
{
printf("%d ",i);
}
}
return 0;
}
第三种方法, 在第二种方法上再做优化#include<stdio.h>
#include<math.h>int main()
{
int i=0;
int j=0;
printf("100-200之间的素数:");
for(i=101; i<=200; i+=2) //所有的偶数都不是素数,所以只需要判断100-200之间的奇数是不是素数 。
{
for(j=2; j<=sqrt(i); j++) //此处与第二种方法解释相同
{
if(i%j==0)
{
break; //此处与第二种方法解释相同
}
}
if(j>sqrt(i)) //此处与第二种方法解释相同 {
printf("%d ",i);
}
}
return 0;
}
{
int i = 0;
int j = 0;
printf("100-200之间的素数:");
for (i = 100; i <= 200; i++) //100-200之间的数
{
for (j = 2; j < i; j++)
{
if (i%j == 0) //判断是否为素数
{
break; //若i可以被j整除,则不是素数,跳出此循环继续下一个i循环。若不能被整除,继续循环j的循环,直到不能满足条件跳出,此时的i就是素数。 }
}
// 跳出j循环的两种可能:1.i可以被j整除,此时i不是素数 2.j循环循环完了即循环条件不能满足时,也没有可以被整除的数,第二种可能说明此时i就是素数
if (i == j) //j循环完了即循环条件不再满足for循环,此时还没有找到被整除的数,所以此时的i就是素数
{
printf("%d ", i);
}
}
return 0;
}
第二种方法,稍作优化#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int j = 0;
printf("100-200之间的素数:");
for(i=100; i<=200; i++) //100-200之间的素数
{
//任何一个不是素数的数都可以分解成比它的开方一个大一个小的两个数相乘的数。例如16,开方为4,则2和8就是比4一个 大一 个小的数,此时只需要判断这个数能不能被比它开方小的数整除,如果可以,就不是素数,不用再判断能不能整除比 它的开方大的数。
for(j=2; j<=sqrt(i); j++) //2到sqrt(i)之间的数。注意此时j应该<=sqrt(i) 不能只是小于。举个例子,例如9,如果只是小于,就会将9归为素数,而实际上9不是素数。
{
if(i%j==0)
{
break; //如果可以整除,跳出j的循环,继续下一个i的循环。如果不能整除,继续j的循环,直到条件不能再满足也没有找到可以被整除的数 ,此时的i就是素数。
}
}
//跳出j循环有两种可能:1.i不能被j整除,此时i不是素数。2.j的循环条件执行完也没有找到可以整除的数,此时i就是素数。
if(j>sqrt(i)) //j循环完了也没有找到可以整除i的数,表示此时的i就是素数
{
printf("%d ",i);
}
}
return 0;
}
第三种方法, 在第二种方法上再做优化#include<stdio.h>
#include<math.h>int main()
{
int i=0;
int j=0;
printf("100-200之间的素数:");
for(i=101; i<=200; i+=2) //所有的偶数都不是素数,所以只需要判断100-200之间的奇数是不是素数 。
{
for(j=2; j<=sqrt(i); j++) //此处与第二种方法解释相同
{
if(i%j==0)
{
break; //此处与第二种方法解释相同
}
}
if(j>sqrt(i)) //此处与第二种方法解释相同 {
printf("%d ",i);
}
}
return 0;
}
相关文章推荐
- 打印某个区间之间的素数,并输出素数的个数。如100-200
- 打印100~200 之间的素数,输出乘法口诀表,判断1000年---2000年之间的闰年
- 简单的算法题,包括1.打印100——200之间的的素数2.输出乘法口诀表3.判断1000年——2000年之间的闰年,给出完整代码
- 1. 打印100~200 之间的素数 2. 输出乘法口诀表 3. 判断1000年---2000年之间的闰年
- 【C】打印100-200之间所有的素数
- 打印100~200之间的素数
- c/c++_找出100到200之间的全部素数并输出
- C 输出100到200之间的素数
- 习题 2.4(6) 将100~200之间的素数输出。
- 打印100~200 之间的素数
- 打印100~200 之间的素数
- 输出100~200之间的素数
- 用c输出100--200之间的素数
- 简单程序2——打印100~200 之间的素数
- 用c语言打印100-200之间的素数
- 打印100—200之间的素数
- c语言:打印100到200之间的素数
- 打印100~200 之间的素数
- 打印100~200之间的素数
- 用c语言编写打印出100~200 之间的素数。