当前位置:网站首页>求解100~200之间的素数
求解100~200之间的素数
2022-07-26 22:49:00 【光光光仔】
求解100~200之间的素数目录
前言
对于很多人对求解素数存在一定的困惑,在这里,我将用一些方法为大家讲解我的理解,希望可以帮助大家。下面是求解100~200之间素数的方法
一、素数是什么?
素数:素数也称质数,素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。(PS:7=1*7,7为素数)
二、求解素数的方法
1.常规方法
代码如下(示例):
#include<stdio.h>
//求解100~200之间的素数
int main()
{
int i = 0;
int j = 0;
int sum = 0; //sum 计数,统计100~200之间的素数个数
for (i = 100; i <= 200; i++) //规定范围
{
for (j = 2; j < i; j++) //素数的定义为只有两个因子:1和它本身
{
if (i % j == 0) //如果i%j==0 说明j也是i的因子,不满足质数的条件
{
break; //已经不满足的,跳出循环
}
}
if (j == i) //如果是质数,内循环中未进行break操作,j++到循环结束为i
{
printf("%d ", i); //输出i
sum++; //总数加一
}
}
printf("\nsum=%d\n", sum);
return 0;
}2.优化代码
优化代码1如下(示例):
int main()
{
int i = 0;
int j = 0;
int sum = 0; //sum 计数,统计100~200之间的素数个数
for (i = 101; i < 200; i+=2) //100,200为偶数不考虑,100~200中的偶数都不考虑每次加2,跳过2
{
for (j = 2; j < i; j++) //素数的定义为只有两个因子:1和它本身
{
if (i % j == 0) //如果i%j==0 说明j也是i的因子,不满足质数的条件
{
break; //已经不满足的,跳出循环
}
}
if (j == i) //如果是质数,内循环中未进行break操作,j++到循环结束为i
{
printf("%d ", i); //输出i
sum++; //总数加一
}
}
printf("\nsum=%d\n", sum);
return 0;
}通过对素数定义的理解,明白偶数(不包括0,2)一定不是素数,在循环过程中,不在考虑偶数,可以大大的提高代码的运算速度。
for (i = 101; i < 200; i+=2) //100,200为偶数不考虑,100~200中的偶数都不考虑每次加2,跳过2 { for (j = 2; j <= i/2; j++) //素数的定义为只有两个因子:1和它本身,i/2为上届 { if (i % j == 0) //如果i%j==0 说明j也是i的因子,不满足质数的条件 { break; //已经不满足的,跳出循环 } } if (j == i) //如果是质数,内循环中未进行break操作,j++到循环结束为i { printf("%d ", i); //输出i sum++; //总数加一 } }
for (i = 101; i < 200; i+=2) //100,200为偶数不考虑,100~200中的偶数都不考虑每次加2,跳过2 { for (j = 2; j <= sqrt(i); j++) //素数的定义为只有两个因子:1和它本身, { if (i % j == 0) //如果i%j==0 说明j也是i的因子,不满足质数的条件 { break; //已经不满足的,跳出循环 } } if (j == i) //如果是质数,内循环中未进行break操作,j++到循环结束为i { printf("%d ", i); //输出i sum++; //总数加一 } }
3.另辟蹊径
用函数的方法,或者采用一种特殊的方法,见如下():
#include<stdio.h>
int main()
{
int i = 0;
int sum = 0; //sum 计数,统计100~200之间的素数个数
for (i = 101; i < 200; i+=2) //100,200为偶数不考虑,100~200中的偶数都不考虑每次加2,跳过2
{
if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0&&i%11!=0&&i%13!=0) //因为2,3,5,7,11,13为质数
{
printf("%d ", i);
sum++;
}
}
printf("\nsum=%d\n", sum);
return 0;
}在100~200的范围中,如果可以整除质数,说明质数为其因子,不考虑其他数的原因是其他数拥有多个因子,质数只有两个因子,若整除质数都不等于0,说明包含的因子数只有1和它本身,则它一定是质数。
4.函数方法解决
#include<stdio.h>
#include<math.h>
int su(int a) //需要返回一个判断数
{
int i = 0;
for (i = 2; i <= sqrt(a); i++)
{
if (a % i == 0)
{
return 1; //不是质数返回1
break; //直接结束循环,函数结束
}
}
}
int main()
{
int i = 0;
int sum = 0;
for (i = 101; i < 200; i+=2)
{
if (su(i) != 1)
{
printf("%d ", i);
sum++;
}
}
printf("\nsum=%d\n",sum);
return 0;
}总结
在这个题目中,我们需要了解质数的定义,明白判断条件,结束条件是什么。求赞,求关注呀!

边栏推荐
- 7.13 Weilai approved the written examination in advance
- OSPF basic configuration application (comprehensive experiment: interference election default routing area summary authentication -- interface authentication)
- Republishing and routing strategy of OSPF
- 关于编程的自我介绍和规划
- JVM面试题(面试必备)
- Codeforces Round #796 (Div. 2), problem: (1688C) Manipulating History
- lvs+keepalived项目实战
- 2022zui new Tiktok 24-hour round robin live broadcast monitoring (I) live broadcast room start-up monitoring
- NB-IOT联网通信
- 7.7 sheen Xiyin written test
猜你喜欢

CAN总线通信应用

ESP8266Wi-Fi数据通讯

STM32入门教程第二讲

Gan's training skills: alchemist cultivation plan - generative confrontation network training, participation and improvement

Explain exi interrupt through the counting experiment of infrared sensor

STM32入门教程第一讲

OSPF静态大实验

Codeforces Round #796 (Div. 2), problem: (1688C) Manipulating History

(史上最详细)Codeforces Round #805 (Div. 3)E. Split Into Two Sets

机械硬盘选购指南——从选购经历谈起
随机推荐
Gan's training skills: alchemist cultivation plan - generative confrontation network training, participation and improvement
(题意+详细思路+加注释代码) Codeforces Round #805 (Div. 3)F. Equate Multisets
Lora光照传感器节点数据采集
[explain C language in detail] this article takes you to know C language and makes you impressed
数字集成电路:MOS管器件章(二)
C语言——while语句、dowhile语句、for循环和循环结构、break语句和continue语句
Codeforces Round #810 (Div. 2), problem: (B) Party
JUC并发编程
Esp8266wi fi access cloud platform
Explain exi interrupt through the counting experiment of infrared sensor
C语言——关系运算符和逻辑运算符、if语句、switch语句、分支结构的嵌套
Lora illumination sensor node data acquisition
Lecture 4 - explain GPIO_ Write function and related routines
(CF1691D) Max GEQ Sum
FID index reproduction step on the pit to avoid the pit text generation image FID quantitative experiment whole process reproduction (FR é Chet inception distance) quantitative evaluation experiment s
RS-485总线通信应用
Golang中的错误处理
微信小程序:用户微信登录流程(附:流程图+源码)
npm报错, Error: EPERM: operation not permitted, mkdir
数字集成电路:MOS管器件章(一)

