当前位置:网站首页>Three ways to find prime numbers
Three ways to find prime numbers
2022-08-09 17:48:00 【I'm free*】
目录
素数
定义:在正整数范围内,大于1Flat and can only be1和自身整除的数.
1.方法一
Use simplistic methods
我也不多说废话,一切尽在代码中.
求100-200之间的素数
素数:只能被1和自身整除
//求素数
#include <stdio.h>
int main()
{
int i = 0, j = 0, t = 0;
int count = 0; //计数
for (i = 100; i <= 200; i++)
{
//j的取值范围2-(i-1)
//Mark prime numbers
t = 0;
for (j = 2; j <= i; j++)
{
if (i % j == 0)
{
t++; //素数:只能被1和自身整除
}
}
if (t == 1) //素数:只能被1和自身整除,所以t=1is a prime number
{
printf("%d ", i);
count++; //计数
}
}
printf("\ncount=%d\n", count);
return 0;
}
2.方法二
进一步优化
#include <stdio.h>
//Prime code optimization
//求100-200之间的素数
//素数:只能被1和自身整除
int main()
{
int count = 0; //计数
int i = 0;
for (i = 100;i <= 200;i++)
{
//判断是否是素数
int flag = 1; //利用flag标记素数
int j = 2;
//j的取值范围2-(i-1)
for (j = 2;j < i;j++)
{ //拿j试除i
if (i % j == 0)
{
flag = 0; //flag为0is a non-prime number
break; //如果在2-(i-1)Meet a capable general within the rangei整除的数字,跳出for (j = 2;j < i;j++){...}循环
}
}
if (1 == flag)//这样可读性更高
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
3.方法三
最优方案
//最后的优化
//因为i=m*n;
// 16=2*8; 16=4*4;
//如果i能被2-(i的开平方)Divisible by a number in between,则i不是素数
//例如16,能被2-4(16的开平方)的2或者4整除,所以16不是素数
#include <stdio.h>
#include <math.h>
int main()
{
int count = 0; //计数
int i = 0;
for (i = 100;i <= 200;i++)
{
//判断是否是素数
int flag = 1; //利用flag标记素数
int j = 2;
//j的取值为2-sqrt(i)
for (j = 2;j <= sqrt(i);j++)
{ //拿j试除i
if (i % j == 0)
{
flag = 0; //flag为0is a non-prime number
break; //如果在2-sqrt(i)Meet a capable general within the rangei整除的数字,
//跳出for (i = 100;i <= 200;i++){...}循环
}
}
if (1 == flag) //这样可读性更高
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);//计数
return 0;
}
总结
It can be seen from method one to method three,The number of executions of the program is gradually decreasing,Efficiency is constantly improving,Hope these methods inspire you.
边栏推荐
猜你喜欢
随机推荐
2022华数杯建模A题思路解析
5. Visualizing Geospatial Data
第三章:GEE数据的使用(3.4-3.11)
学编程的第十天
4. Using Local Geospatial Data
第二章:创建交互式地图(2.1-2.3)
学编程的第五天
2022华数杯建模B题思路解析
真正入驻CSDN的第一天
学编程的第七天
js中的Date对象 及 将时间戳转换为yy-mm-dd hh:mm:ss格式的方法
Go语言基础(十二):并发编程
ARM基础知识点笔记
Mysql学习(三)
VMware 虚拟机添加 2 张网卡 设置 NAT 与 桥接网络
路由概述与静态配置ip
Heap series_0x08: NT heap debug support_Discover now debug support (DPH)
QT页面跳转的实现
2022华数杯建模C题思路解析
NAT种类及配置