精华内容
下载资源
问答
  • 判断一个数是否素数

    千次阅读 2020-03-26 10:01:03
    素数(也叫质数)的数学定义为:大于1的自然数中除了1和它本身外没有其他因数的整数,常见的素数有:2,3,5,7,11,13……等,判断一个数是不是素数经常作为考试题目。 先了解一下算法: 设i=2,n为需要判断的...

    素数(也叫质数)的数学定义为:大于1的自然数中除了1和它本身外没有其他因数的整数,常见的素数有:2,3,5,7,11,13……等,判断一个数是不是素数经常作为考试题目。

     

    算法

    算法1

    算法描述:

    1. 令i=2,n为需要判断的数;
    2. 如果n<=1,则输出:n不是素数,如果n>=2,则判断n是否等于2,如果n=2,则输出:n是素数,否则执行第3步骤;
    3. 判断i<n是否成立,如果成立则计算n%i,否则输出:n是素数;
    4. 如果n%i为0,则输出:n不是素数;
    5. 如果n%i不为0,则令i=i+1,同时返回第3步。

    算法流程图:

                                                                                              图1

    图1中的红线是为了区分两个相交的箭头,算法中要特别注意对n<=1和n=2的情况进行处理。

    该算法的时间复杂度为:

    最好:O(1),此时走图1中左边两条路径,不进循环

    最差:O(n-2),此时进入取模循环体中

     

    算法2

    该算法是对算法1的改进

    算法描述:

    1. 令i=2,n为需要判断的数;
    2. 如果n<=1,则输出:n不是素数,如果n>=2,则判断n是否等于2或3,如果n=2 || 3,则输出:n是素数,否则执行下一步;
    3. 判断i<=sqrt(n)是否成立,如果成立则计算n%i,如果不成立,则输出:n是素数;
    4. 如果n%i的为0,则输出:n不是素数;
    5. 如果n%i不为0,则令i=i+1,同时返回第3步。

    算法流程图:

                                                                           图2

    算法时间复杂度分析:

    最好:O(1),此时走图1中左边两条路径,不进循环

    最差:O(sqrt(n)-1),此时进入取模循环体中

     

    因为当n>3时,sqrt(n)-1<n-2,n为正整数。所以算法2的整体时间复杂度比算法1底,相比之下,算法2更有优势。

    代码

    算法2的代码实现,使用Java编程语言

     public static boolean isPrime(int n) {
            //java的基本数据类型中除了char其他都是无符号类型,并且char只能是无符号类型,即Java不提供unsigned关键字
            int i = 2;
            boolean flag = true;
            if (n <= 1) {//这是Java当中特有的代码,因为在Java的语法中不存在unsigned关键字
                return flag = false;
            } else {
                while (i <= sqrt(n)) {//出口1
                    //出口1和出口2之间为“or”关系
                    if (n % i == 0) {//出口2
                        flag = false;
                        break;
                    }
                    i++;
                }
            }
            return flag;
        }

    代码中对n=2 || 3的判断是隐式的,在while判断语句中中,因为i的初始值为2,又sqrt(2)和sqrt(3)都小于2,所以n=2 || 3进入不了while循环,程序会返回flag的初始值true。

    上面代码中的while循环可以用for替代,这样看起来更简介,具体参考博主“canmengmeng ”的文章素数的for循环实现

     

     

     

     

     

    展开全文
  • 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...

    欢迎使用Markdown编辑器

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • pta函数作业

    2017-12-30 16:02:00
    设计思路:本题需要判断一个正整数数是否素数,所谓素数,就是除一和本身外没有其他因数的数。具体判断过程如下:对于一个大于一的整数,从2开始用循环计数i去除此数,若余数不为零,则循环计数i自加,循环继续,...

    7-10

    设计思路:本题需要判断一个正整数数是否为素数,所谓素数,就是除一和本身外没有其他因数的数。具体判断过程如下:对于一个大于一的整数,从2开始用循环计数i去除此数,若余数不为零,则循环计数i自加,循环继续,否则跳出循环。在循环之外,设计一个判断,若循环计数i大于这个数的平方根,则这个说明从2开始到其本身没有其他因数,则这个数是素数,否则这个数不是素数。

    流程图:

    调试过程:1,

    如图,编写错误,循环结束的标志写成了i<n,应该改为i<count

    2,

    如图,循环结束条件i<n/2,导致运行超时,应把其及所有条件改为sqrt(n)

    3,

    如图,上方循环结束条件已改为i<sqrt(n),但是下方的判断条件却仍为i>n/2,应该为一致。

    4,

    如图,当取最大整数时出错,应讲定义的n改为双精度浮点型

    5,

    如图,输入最大最大整数时,无论是否提前跳出循环,i都不满足i>sqrt(n),应将整个函数改为整型,用return返回较为合适

    7-4

    设计思路:本题要求验证哥德巴赫猜想,即验证一个大于2的的偶数总能表示为两个素数的和这句话是否正确,正常的思路应该是从小到大排出素数,若其中两个素数的和等于输入的偶数,则取出这两个素数。但是这样做未免太过麻烦,程序的长度先不说,运行的时间也大大超出限制,所以应当换种思路,从2开始,用所输入的偶数减去一个素数,然后判断所得差是否为素数,若是,则按格式输入这两个素数,若不是,用下一个素数做减数继续循环。

    流程图:

    调试过程:本题没有进行调试。

    7-3

    设计思路:本题是简单的循环题,但是要将主要运算步骤放于子函数内,首先写入<math.h>头文件,然后在主函数内输入n的值,将此值作为实参传给子函数,子函数内设计循环,以循环计数i从1到n为止,在每一次循环内调用pow函数求幂,然后对其进行累加

    流程图:

     

    调试过程:

     

     如图,输入的n并没有被定义,应在上方补充整形定义

    #同学互评

     图一为我的代码,图二为同学代码。

    不同处:

    1,我在子函数的命名上使用了标准的fact,二同学只是简单的用单个字母命名,我认为我这样做使得代码更明了,更容易读懂。

    2,在定义结果值是,我使用了double型,而同学使用的是float型,我认为直接按照题目意思来可以避免出错,但是从长远的角度来看,本题要求使结果在double精度范围内,同学使用float型必然符合,但是若题目稍加改变,我出错的可能性比他大得多,这是他的主要优势。

    3,在循环结构上,我的方式是由i=0开始,结束条件为i<n。同学的方式为从i=1开始,结束条件为i<=n。此处不同至少单纯的风格不同,并没有对错之分。按我个人观点,我认为我这样做对于后面数组题目有帮助,同样的写法可以增加自己的熟练度,从而有效地避免编写代码时造成不必要的失误。

    #本周pta排名

     

    #本周学习总结

    1,学会了使用子函数,使代码的结构更加完整,思路更清晰,学会区分i++与++i。

    2,对于逻辑运算符的优先级别还不是很清楚,需要加深印象。

     

    转载于:https://www.cnblogs.com/zzb123456789/p/8150160.html

    展开全文
  • c++基础内容PART1

    2020-11-20 18:23:40
    PTA ch5 作业判断素数新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的...1.对于判断一个数n是否素数,最朴素的方法是按素数的定义。 试除以从2开始到m-1的整

    判断素数

    很重要的一点是,要考虑到1不是素数,2是素数。

    1.对于判断一个数n是否为素数,最朴素的方法是按素数的定义。
    试除以从2开始到m-1的整数,如果无一例外地不能整除,则该数一定是素数。(转载)

    for(int i=2; i<n; i++)
    {	
    	if(n%i == 0)
    	{
         	cout << " No" << endl;
         }
    }
    

    2.判断m是否为素数,只要试除到m的平方根就可以了,不必一直到m-1。(eg:PTA ch5 作业 第一题)

    #include <iostream>
    #include <math.h>
    using namespace std;
    int main()
    {
    	int judge(int n);
    	int a,n,i;
    	cin>>a;
    	for(i=0;i<a;i++)
    	{
    		cin>>n;
    		if(judge(n))
    		{
    			cout<<"Yes"<<endl;
    		}
    		else cout<<"No"<<endl;
    	
    	}
    }
    int judge(int n)
    {
    	int i;
    	if(n==1)
    	return 0;
    	for(i=2;i<=sqrt(n);i++)
    	{
    		if(n%i==0)
    		{
    			return 0;
    		}
    	}
    return 1;
    }
    

    计算Fibonacci数列(含静态变量)

    在这里插入图片描述

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int Fibonacci(int n)
    {
        static int a = 1;
        static int b = 1;
        if (n<=2) return 1;
        else
        {
            int c = a + b;
            a = b;
            b = c;
            return c;
        }
    }
    int main() {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++) 
        {
            cout << setw(10) << setiosflags(ios::left) << Fibonacci(i);
            if (i % 4 == 0) cout << endl;
        }
        return 0;
    }
    

    这里用静态变量的好处:因为需要递归,所以每次a和b其实都是在上一次的基础上做变换。

    设置占位+左对齐

    这个不需要额外加头文件,在你要输出内容的后方写:
    eg:等号右边数字占4位、左对齐

    cout<<j<<"*"<<i<<"=";
    cout.setf(ios::left);
    cout.width(4);
    

    二进制数转十进制数

    要求:输入仅由0和1构成的正的二进制数(不超过32位), 以换行符结束。输出该数对应的十进制数。

    #include <iostream>
    #include <bitset>
    using namespace std;
    int main()
    {
    	bitset<32> bint;  
        cin >> bint;
        cout << bint.to_ulong() << endl;
        return 0;
    } 
    

    bitset的用法.

    小数取整的函数

    详解floor函数、ceil函数和round函数.

    展开全文
  •  实例110 通过定义方法求一个数的平方 133  实例111 使用重载方法实现不同类型数据的计算 135 5.2 结构与类 136  实例112 通过结构计算矩形的面积 136  实例113 通过类继承计算梯形面积 137  实例114 封装...
  • (4) 输入一个 1 ~ 1000 之间的整数,判断是否是素数 (5) 输入 2 个 1 ~ 10000 内的整数,求他们的最大公约数 (6) 输入 3 个数 a ( a 不等于 0 ) ,b,c ,求一元二次方程 ax 2 +bx+c=0 的根
  • 3.5.3 给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中? 3.5.4 在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为2G。 3.5.5 时分秒针...
  • 输入一个正整数n (1),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号,...
  • javascript入门笔记

    2018-05-15 15:01:07
    1、声明一个变量 r ,来表示一个圆的半径,并赋值 2、声明一个常量PI ,来表示圆周率3.14 3、通过 r 和 PI 来计算 该圆的周长,保存在变量l中 周长 = 2 * π * 半径 4、通过 r 和 PI 来计算 该圆的面积,保存在...
  • 实例110 通过定义方法求一个数的平方 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例...
  • 实例110 通过定义方法求一个数的平方 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例...
  • 实例110 通过定义方法求一个数的平方 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例...
  • 实例110 通过定义方法求一个数的平方 133 实例111 使用重载方法实现不同类型数据的计算 135 5.2 结构与类 136 实例112 通过结构计算矩形的面积 136 实例113 通过类继承计算梯形面积 137 实例114 封装类实现一个简单...
  • 第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号, 因此输出的a,b值之间加了一个逗号。第六行的...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    面试题85 是否可以确定指针指向一个对象 90 面试题86 如何使用指针操作数组 90 面试题87 const对象的指针和const指针的区别 91 面试题88 数组指针与指针数组的区别 92 8.2 函数指针 93 面试题89 什么是函数指针?...
  • 1. 编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。 实验步骤与要求: (1) 编写一个函数prime(n),返回给定整数n是否为素数。 (2) 编写一个主函数,输入一个整数,调用(1)中的...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例129 统计指定文件中的字符个数 183  实例130 对象的序列化与反序列化 185  实例131 同时显示多个文件 187  实例132 生成zip压缩文件 189  实例133 解压缩zip文件 192  实例134 生成Excel文件 194 ...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例129 统计指定文件中的字符个数 183  实例130 对象的序列化与反序列化 185  实例131 同时显示多个文件 187  实例132 生成zip压缩文件 189  实例133 解压缩zip文件 192  实例134 生成Excel文件 ...
  • java范例开发大全

    2013-03-08 20:06:54
    实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel...
  • 怎么判断一个数组是否已经排序 普通map如何不用锁解决协程安全问题 array和slice的区别 golang面试题:json包变量不加tag会怎么样? 零切片、空切片、nil切片是什么 slice深拷贝和浅拷贝 map触发扩容的时机,满足...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    面试题042 字符串字面量是否自动生成一个String对象 68 面试题043 字符串对象池的作用是什么 69 面试题044 StringBuffer和StringBuilder存在的作用是什么 71 面试题045 如何输出反转过后的字符串 72 面试题046 如何...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取...
  • 面试题042 字符串字面量是否自动生成一个String对象 68 面试题043 字符串对象池的作用是什么 69 面试题044 StringBuffer和StringBuilder存在的作用是什么 71 面试题045 如何输出反转过后的字符串 72 面试题046 ...
  • 应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年 Day03 - 分支结构 分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图 if语句 - 简单的if / if-else结构 / if-...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

判断一个数是否是素数流程图