《计算机常用算法与程序设计案例教程》习题解答

合集下载

Java程序设计案例教程习题答案完整版机工版x

Java程序设计案例教程习题答案完整版机工版x

Java程序设计案例教程习题答案完整版机工版xJava程序设计案例教程习题答案完整版机工版一、简介Java程序设计是计算机专业非常重要的一门课程,通过学习该课程,可以让学生了解到Java语言的基础知识,掌握面向对象程序设计的思想和方法,并能够解决实际问题。

为了巩固所学知识,教材通常配备了一些习题,本文将提供这些习题的答案,帮助学生更好地理解和掌握Java程序设计。

二、Java程序设计习题答案下面将列举一些常见的Java程序设计习题,并提供相应的答案。

希望能够帮助读者更好地掌握Java程序设计。

1. 编写一个Java程序,根据用户输入的数字判断其是否为素数。

答案:```javaimport java.util.Scanner;public class PrimeChecker {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入一个数字:");int num = input.nextInt();boolean isPrime = true;for (int i = 2; i <= num / 2; i++) {if (num % i == 0) {isPrime = false;break;}}if (isPrime && num > 1) {System.out.println(num + "是素数。

");} else {System.out.println(num + "不是素数。

");}}}```2. 编写一个Java程序,求解一个整数数组中的最大值和最小值。

答案:```javapublic class ArrayMinMax {public static void main(String[] args) {int[] array = {10, 45, 36, 74, 29};int min = array[0];int max = array[0];for (int i = 1; i < array.length; i++) {if (array[i] < min) {min = array[i];}if (array[i] > max) {max = array[i];}}System.out.println("最小值:" + min); System.out.println("最大值:" + max); }}```3. 编写一个Java程序,统计一个字符串中各个字符的出现次数。

算法与程序设计试题带答案

算法与程序设计试题带答案

算法与程序设计试题带答案1. 以下是一道经典的算法题,请编写代码实现求最大公约数(GCD)的算法。

```pythondef gcd(a, b):if b == 0:return areturn gcd(b, a % b)# 测试print(gcd(15, 25)) # 输出 5print(gcd(54, 72)) # 输出 18```解析:这是一个使用递归实现的辗转相除法算法,也叫欧几里得算法。

当两个数 a 和 b 求最大公约数时,如果 b 等于 0,则 a 就是最大公约数;否则,将 b 作为新的 a,将 a 除以 b 的余数作为新的 b 进行递归计算。

2. 请编写代码实现一个链表的反转。

```pythonclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextdef reverse_linked_list(head):prev = Nonecurr = headwhile curr:next_node = curr.nextcurr.next = prevprev = currcurr = next_nodereturn prev# 测试node1 = ListNode(1)node2 = ListNode(2)node3 = ListNode(3)node1.next = node2node2.next = node3reversed_head = reverse_linked_list(node1)while reversed_head:print(reversed_head.val)reversed_head = reversed_head.next```解析:这是一个经典的链表反转算法。

使用 prev、curr、next_node 三个指针来实现,其中 prev 用于保存上一个节点,curr 用于保存当前节点,next_node 用于保存下一个节点。

程序设计题库及答案详解

程序设计题库及答案详解

程序设计题库及答案详解程序设计题库及答案详解是面向计算机科学与技术专业学生以及编程爱好者的一份重要学习资料。

它不仅包含了大量的编程题目,还提供了详细的解题思路和答案,帮助读者深入理解程序设计的原理和技巧。

# 一、基础题目1. 题目1:编写一个程序,实现两个整数的加法。

- 答案详解:首先定义两个整数变量,然后使用加法运算符将它们相加,并将结果存储在一个新变量中。

最后,输出结果。

2. 题目2:编写一个程序,实现字符串的反转。

- 答案详解:可以使用循环结构遍历字符串的每个字符,并将它们添加到一个新的字符串的开始位置。

完成后,输出反转后的字符串。

# 二、数组与循环3. 题目3:编写一个程序,找出数组中的最大值。

- 答案详解:首先初始化一个变量来存储最大值,然后使用循环遍历数组中的每个元素,并与当前最大值进行比较,如果当前元素更大,则更新最大值。

循环结束后,输出最大值。

4. 题目4:编写一个程序,实现数组的排序。

- 答案详解:可以使用冒泡排序或选择排序等算法。

以冒泡排序为例,通过多次遍历数组,比较相邻元素的大小,并在必要时交换它们的位置,直到整个数组有序。

# 三、函数与递归5. 题目5:编写一个函数,计算两个数的乘积。

- 答案详解:定义一个函数,接受两个参数,然后在函数内部使用乘法运算符计算它们的乘积,并返回结果。

6. 题目6:编写一个递归函数,计算阶乘。

- 答案详解:定义一个递归函数,如果输入的数为0或1,则返回1;否则,返回输入数乘以递归调用该函数的结果,输入数减1。

# 四、数据结构7. 题目7:编写一个程序,实现链表的插入操作。

- 答案详解:首先定义链表节点的结构,然后编写一个函数来创建新的节点。

在插入操作中,根据插入位置的不同,调整节点的指针指向。

8. 题目8:编写一个程序,实现二叉树的遍历。

- 答案详解:可以使用前序、中序或后序遍历。

以中序遍历为例,首先遍历左子树,然后访问根节点,最后遍历右子树。

基本算法语句与算法案例教案练习含答案

基本算法语句与算法案例教案练习含答案

基本算法语句与算法案例教案练习含答案第一章:算法概述1.1 算法的定义与特性定义:算法是解决问题的一系列清晰、有序的步骤。

特性:可行性、确定性、有穷性、足够性。

1.2 算法的表示方法伪代码:使用简化的语言描述算法。

流程图:使用图形符号表示算法步骤。

第二章:基本算法语句2.1 输入输出语句输入:从用户或文件获取数据。

输出:向用户或文件输出数据。

2.2 赋值语句赋值:将一个值或表达式赋给变量。

2.3 条件语句如果:根据条件执行相应的操作。

否则:当条件不满足时执行的操作。

2.4 循环语句循环:重复执行一段代码直到条件不满足。

第三章:算法案例3.1 冒泡排序算法目的:对一组数据进行从小到大的排序。

步骤:比较相邻元素,交换不符合顺序的元素。

3.2 查找算法线性查找:从数组的一端开始,逐个比较元素。

二分查找:在有序数组中,通过比较中间元素确定位置。

3.3 插入排序算法目的:对一组数据进行从小到大的排序。

步骤:将未排序的元素插入到已排序的序列中。

第四章:算法分析4.1 时间复杂度分析定义:算法执行时间与输入规模的关系。

常见时间复杂度:O(1)、O(n)、O(n^2)、O(log n)。

4.2 空间复杂度分析定义:算法执行过程中所需内存与输入规模的关系。

常见空间复杂度:O(1)、O(n)。

第五章:算法设计与优化5.1 贪心算法特点:局部最优解构成全局最优解。

应用:最小树、最短路径等。

5.2 分治算法特点:将问题分解为子问题,递归解决。

应用:归并排序、快速傅里叶变换等。

5.3 动态规划算法特点:利用多阶段决策过程的最优解。

应用:背包问题、最长公共子序列等。

第六章:递归算法6.1 递归的基本概念定义:一个函数直接或间接地调用自身。

特点:自顶向下、分而治之。

6.2 递归算法的实现直接递归:函数直接调用自身。

间接递归:函数通过其他函数间接调用自身。

6.3 递归算法的应用计算阶乘、斐波那契数列等。

第七章:图算法7.1 图的基本概念顶点、边、无向图、有向图、权重等。

程序设计实践教程 习题及答案

程序设计实践教程 习题及答案

程序设计实践教程习题及答案程序设计实践是计算机科学与技术领域中一门重要的课程,通过实践项目来培养学生的程序设计能力。

本文将为大家提供一些程序设计实践的习题,并附上详细的答案,旨在帮助读者更好地理解和掌握程序设计的技巧与方法。

习题一:计算斐波那契数列要求:编写一个程序,计算斐波那契数列的前n项,并输出结果。

答案:```pythondef fibonacci(n):if n <= 0:return []elif n == 1:return [1]elif n == 2:return [1, 1]else:fib = [1, 1]for i in range(2, n):fib.append(fib[i-1] + fib[i-2])return fibn = int(input("请输入要计算的斐波那契数列的项数:"))result = fibonacci(n)print(result)```习题二:判断素数要求:编写一个程序,判断一个数是否为素数,并输出结果。

答案:```pythondef is_prime(num):if num < 2:return Falsefor i in range(2, int(num**0.5)+1):if num % i == 0:return Falsereturn Truenum = int(input("请输入一个数:"))if is_prime(num):print(num, "是素数")else:print(num, "不是素数")```习题三:求解最大公约数和最小公倍数要求:编写一个程序,输入两个整数,求解它们的最大公约数和最小公倍数,并输出结果。

答案:```pythondef gcd(a, b):while b:a, b = b, a % breturn adef lcm(a, b):return a * b // gcd(a, b)num1 = int(input("请输入第一个整数:"))num2 = int(input("请输入第二个整数:"))result_gcd = gcd(num1, num2)result_lcm = lcm(num1, num2)print("最大公约数是:", result_gcd)print("最小公倍数是:", result_lcm)```习题四:字符串逆序要求:编写一个程序,将输入的字符串逆序输出。

程序设计基础教程习题答案

程序设计基础教程习题答案

程序设计基础教程习题答案程序设计基础教程习题答案程序设计是计算机科学中非常重要的一门学科,它涉及到如何使用计算机语言编写代码来解决问题。

在学习程序设计的过程中,练习习题是非常重要的一部分,它可以帮助我们巩固所学的知识,并提升我们的编程能力。

在本文中,我将为大家提供一些程序设计基础教程习题的答案,希望能对大家的学习有所帮助。

1. 请编写一个程序,计算并输出1到100之间所有偶数的和。

答案:```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint(sum)```2. 请编写一个程序,判断一个给定的整数是否为质数。

答案:```pythonnum = int(input("请输入一个整数:"))is_prime = Trueif num <= 1:is_prime = Falseelse:for i in range(2, int(num ** 0.5) + 1):if num % i == 0:is_prime = Falsebreakif is_prime:print(num, "是质数")else:print(num, "不是质数")```3. 请编写一个程序,求解一个给定整数的阶乘。

答案:```pythonnum = int(input("请输入一个整数:"))factorial = 1for i in range(1, num + 1):factorial *= iprint(num, "的阶乘为:", factorial)```4. 请编写一个程序,判断一个给定的字符串是否为回文字符串。

答案:```pythonstr = input("请输入一个字符串:")is_palindrome = Truefor i in range(len(str) // 2):if str[i] != str[-i - 1]:is_palindrome = Falsebreakif is_palindrome:print(str, "是回文字符串")else:print(str, "不是回文字符串")```5. 请编写一个程序,将一个给定的字符串中的所有单词进行反转。

算法设计与分析常见习题及详解

算法设计与分析常见习题及详解

算法设计与分析常见习题及详解⽆论在以后找⼯作还是⾯试中,都离不开算法设计与分析。

本博⽂总结了相关算法设计的题⽬,旨在帮助加深对贪⼼算法、动态规划、回溯等算法的理解。

1、计算下述算法执⾏的加法次数:输⼊:n =2^t //t 为整数输出:加法次数 k K =0while n >=1 do for j =1 to n do k := k +1 n = n /2return k解析:第⼀次循环执⾏n次加法,第⼆次循环执⾏1/2次加法,第三次循环执⾏1/次加法…因此,上述算法执⾏加法的次数为==2n-12、考虑下⾯每对函数 f(n) 和 g(n) ,如果它们的阶相等则使⽤Θ记号,否则使⽤ O 记号表⽰它们的关系解析:前导知识:,因为解析:,因为解析:,因为解析:解析:3、在表1.1中填⼊ true 或 false解析:利⽤上题的前导知识就可以得出。

2=21/4n +n +21n +41...+1n +n −n +21n −21n +41....−1f (n )=(n −2n )/2,g (n )=6n1<logn <n <nlogn <n <2n <32<n n !<n ng (n )=O (f (n ))f (n )=Θ(n ),g (n )=2Θ(n )f (n )=n +2,g (n )=n n 2f (n )=O (g (n ))f (n )=Θ(n ),g (n )=Θ(n )2f (n )=n +nlogn ,g (n )=n nf (n )=O (g (n ))f (n )=Θ(nlogn ),g (n )=Θ(n )23f (n )=2(log ),g (n )=n 2logn +1g (n )=O (f (n ))f (n )=log (n !),g (n )=n 1.05f (n )=O (g (n ))4、对于下⾯每个函数 f(n),⽤f(n) =Θ(g(n))的形式,其中g(n)要尽可能简洁,然后按阶递增序排列它们(最后⼀列)解析:最后⼀个⽤到了调和公式:按阶递增的顺序排列:、、、、、、、、、(n −2)!=Θ((n −2)!)5log (n +100)=10Θ(logn )2=2n Θ(4)n 0.001n +43n +31=Θ(n )4(lnn )=2Θ(ln n )2+3n logn =Θ()3n 3=n Θ(3)n log (n !)=Θ(nlogn )log (n )=n +1Θ(nlogn )1++21....+=n1Θ(logn )=∑k =1nk 1logn +O (1)1++21....+n 15log (n +100)10(lnn )2+3n logn log (n !)log (n )n +10.001n +43n +313n 22n (n −2)!5、求解递推⽅程前导知识:主定理前导知识:递归树:例⼦:递归树是⼀棵节点带权的⼆叉树,初始递归树只有⼀个结点,标记为权重W(n),然后不断进⾏迭代,最后直到树种不再含有权为函数的结点为⽌,然后将树根结点到树叶节点的全部权值加起来,即为算法的复杂度。

算法和程序设计分析及试题附答案_08-算法和程序设计

算法和程序设计分析及试题附答案_08-算法和程序设计

选修1:算法与程序设计第一单元算法一、知识内容(一)使用计算机解决问题的一般过程考试要求:对所列知识要知道其内容及含义,并能用自己的语言或动作进行表达、判断和直接运用。

1.一般过程(1)分析问题确定要使用计算机来“做什么”,即确定解题的任务。

(2)寻求解决问题的途径和方法。

(3)用计算机进行处理。

2.确定解决问题的方法及步骤化确定了解决问题的方法后,必须把解决问题的方法步骤化,即用某种方式告诉计算机每个需做什么。

计算机开始计算之前,需把解决问题的程序存储在内存中。

通常一个程序包括指令和数据两部分。

(1)指令部分:指令是对计算机操作类型和操作数地址做出规定的一组符号。

(2)数据部分:计算所需的原始数据、计算的中间结果或最终结果。

3.设计程序时需要考虑的问题(1)数据的存储:计算所需要的原始数据、计算产生的中间结果需要存储在不同的变量中。

(2)计算的过程:把解决问题的方法步骤化,并用计算机能执行的指令来有序地实现对应的步骤。

(3)典型的指令类型有输入指令、输出指令、算术运算指令、逻辑运算指令和控制转移指令。

(二)算法及算法的表示方法考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。

1.算法的特征(1)有穷性。

一个算法必须保证它的执行步骤是有限的,即它是能终止的。

(2)确定性。

算法中的每个步骤必须有确切的含义,不应当有模棱两可的。

(3)能行性。

算法中的每一个步骤都要足够简单,能实际能作的,而且在能在有限的时间内完成。

(4)有0个或多个输入。

(5)有一个或多个输出。

(三)用自然语言、流程图、伪代码表示算法考试要求:对所列知识要理解其确切含义及与其它知识的联系,能够用所学的信息技术知识和操作方法解决实际问题,熟练应用信息技术进行信息的处理。

1.自然语言就像写文章时所列的提纲一样,可以有序地用简洁的自然语言加数学符号来描述算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机常用算法与程序设计案例教程》习题解答提要习题11-1 分数分解算法描述把真分数a/b 分解为若干个分母为整数分子为“1”的埃及分数之和: (1) 寻找并输出小于a/b 的最大埃及分数1/c ; (2) 若c>900000000,则退出;(3) 若c ≤900000000,把差a/b-1/c 整理为分数a/b ,若a/b 为埃及分数,则输出后结束。

(4) 若a/b 不为埃及分数,则继续(1)、(2)、(3)。

试描述以上算法。

解:设)(int ab d = (这里int(x)表示取正数x 的整数),注意到1+<<d ab d ,有)1()1(11+-+++=d b bd a d ba算法描述:令c=d+1,则 input (a,b) while(1){c=int(b/a)+1;if(c>900000000) return; else{ print(1/c+); a=a*c-b;b=b*c; // a,b 迭代,为选择下一个分母作准备 if(a==1){ print(1/b);return;} } }1-2 求出以下程序段所代表算法的时间复杂度 (1)m=0;for(k=1;k<=n;k++)for(j=k;j>=1;j--)m=m+j;解:因s=1+2+…+n=n(n+1)/2时间复杂度为O(n2)。

(2)m=0;for(k=1;k<=n;k++)for(j=1;j<=k/2;j++)m=m+j;解:设n=2u+1,语句m=m+1的执行频数为s=1+1+2+2+3+3+…+u+u=u(u+1)=(n−1)(n+1)/4设n=2u,语句m=m+1的执行频数为s=1+1+2+2+3+3+…+u=u2=n2/4时间复杂度为O(n2)。

(3)t=1;m=0;for(k=1;k<=n;k++){t=t*k;for(j=1;j<=k*t;j++)m=m+j;}解:因s=1+2×2!+ 3×3!+…+ n×n!=(n+1)!−1时间复杂度为O((n+1)!).(4)for(a=1;a<=n;a++){s=0;for(b=a*100−1;b>=a*100−99;b−=2){for(x=0,k=1;k<=sqrt(b);k+=2)if(b%k==0){x=1;break;}s=s+x;}if(s==50)printf("%ld \n",a);break;}}解:因a循环n次;对每一个a,b循环50次;对每一个b,k2次。

因而k循环体的执行次数s满足25(991991001)250(12)432502506s n n n n n n+++-++++⋅<<<<时间复杂度为O(n n )。

1-3 若p(n)是n 的多项式,证明:O(log(p(n)))=O(logn)。

证:设m 为正整数,p(n)=a1×n m +a2×n m-1+…+am ×n , 取常数c>ma1+(m-1)a2+…+am, 则log(p(n))=ma1×logn+(m-1)a2×logn+…=(ma1+(m-1)a2+…)×logn <clogn因而有O(log(p(n)))=O(logn)。

1-4 构建对称方阵观察图1-5所示的7阶对称方阵:图1-5 7阶对称方阵试构造并输出以上n 阶对称方阵。

解:这是一道培养与锻炼我们的观察能力与归纳能力的案例,一个一个元素枚举赋值显然行不通,必须全局着眼,分区域归纳其构造特点,分区域枚举赋值。

(1) 设计要点设方阵中元素的行号为i ,列号为j 。

可知主对角线:i=j ;次对角线:i+j=n+1。

两对角线赋值“0”。

按两条对角线把方阵分成上部、左部、右部与下部4个区,如图1-6所示。

图1-6 对角线分成的4个区上部按行号i 赋值;下部按行号函数n+1-i 赋值。

左部按列号j 赋值;右部按列号函数n+1-j 赋值。

(2) 程序实现#include <stdio.h> void main(){int i,j,n,a[30][30];printf(" 请确定方阵阶数n: ");scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i==j || i+j==n+1)a[i][j]=0; // 方阵对角线元素赋值if(i+j<n+1 && i<j)a[i][j]=i; // 方阵上部元素赋值if(i+j<n+1 && i>j)a[i][j]=j; // 方阵左部元素赋值if(i+j>n+1 && i>j)a[i][j]=n+1-i; // 方阵下部元素赋值if(i+j>n+1 && i<j)a[i][j]=n+1-j; // 方阵右部元素赋值}printf(" %d阶对称方阵为:\n",n);for(i=1;i<=n;i++){ for(j=1;j<=n;j++) // 输出对称方阵printf("%3d",a[i][j]);printf("\n");}}1-5 据例1-2的算法,写出求解n个“1”组成的整数能被2011整除的程序。

修改程序,求出 n至少为多大时,n个“1”组成的整数能被2013整除?解:程序为#include <stdio.h>void main(){ int a,c,p,n;p=2011;c=1111;n=4; // 变量c与n赋初值while(c!=0) // 循环模拟整数竖式除法{ a=c*10+1;c=a%p;n=n+1; // 每试商一位n增1}printf(" 由 %d 个1组成的整数能被 %d 整除。

\n",n,p);}习题22-1 解不等式设n 为正整数,解不等式2011/12/1113/12/1112/11112010<++++++++++<n解:上下限一般为键盘输入的a,b 。

// 解不等式: a<1+1/(1+1/2)+...+1/(1+1/2+...+1/n)<b #include <stdio.h> #include<math.h> void main(){ long a,b,c,d,i; double ts,s;printf(" 请输入a,b: "); scanf("%d,%d",&a,&b); i=0;ts=0;s=0; while(s<a) { i=i+1;ts=ts+(double)1/i; s=s+1/ts; } c=i;while(s<b) {i=i+1;ts=ts+(double)1/i; s=s+1/ts;} d=i-1;printf("\n 满足不等式的正整数n 为: %ld ≤n ≤%ld \n",c,d); }2-2 韩信点兵韩信在点兵的时候,为了知道有多少个兵,同时又能保住军事机密,便让士兵排队报数。

按从1至5报数,记下最末一个士兵报的数为1; 再按从1至6报数,记下最末一个士兵报的数为5; 再按1至7报数,记下最末一个报的数为4; 最后按1至11报数,最末一个士兵报的数为10。

你知道韩信至少有多少兵?1. 求解要点设兵数为x,则x满足下述的同余方程组:x=5y+1 即 x=1 (mod 5)x=6z+5 x=5 (mod 6)x=7u+4 x=4 (mod 7)x=11v+10 x=10 (mod 11)其中y,z,u,v都为正整数。

试求满足以上方程组的最小正整数x。

应用枚举可得到至少的兵数。

x从1开始递增1取值枚举当然可以,但不必要。

事实上枚举次数可联系问题的具体实际大大缩减。

(1) 注意到x除11余10,于是可设置x从21开始,以步长11递增。

此时,只要判别前三个条件即可。

(2) 由以上第2,4两方程知x+1为11的倍数,也为6的倍数。

而11与6互素,因而x+1必为66的倍数。

于是取x=65开始,以步长66递增。

此时,只要判别x%5=1与x%7=4 两个条件即可。

这样可算得满足条件的最小整数x即点兵的数量。

2. 程序实现// 韩信点兵#include <stdio.h>void main(){ long int x;x=65;while(1){ x=x+66;if(x%5==1 && x%7==4){ printf("至少有兵: %ld 个。

",x);break;}}}2-3 分解质因数对给定区间[m,n]的正整数分解质因数,•每一整数表示为质因数从小到大顺序的乘积形式。

如果被分解的数本身是素数,则注明为素数。

例如, 2012=2*2*503, 2011=(素数!)。

解:对区间中的每一个整数i(b=i),用k(2——sqrt(i))试商:若不能整除,说明该数k不是b的因数,k增1后继续试商。

若能整除,说明该数k是b的因数,打印输出"k*";b除以k的商赋给b(b=b/k)•后继续用k试商(注意,可能有多个k因数),直至不能整除,k增1后继续试商。

按上述从小至大试商确定的因数显然为质因数。

如果有大于sqrt(n)的因数(至多一个!)•,在试商循环结束后要注意补上,不要遗失。

如果整个试商后b的值没有任何缩减,仍为原待分解数n,说明n是素数,作素数说明标记。

若k是b的因数,按格式输出,然后b=b/k后继续试商k。

若k不是b的因数,则k增1后继续。

若上述试商完成后1<b<i,说明i有一个大于sqrt(i)的因数,要补上该因数。

若试商后b还是原来的i,则i是素数。

// 质因数分解乘积形式#include"math.h"#include <stdio.h>void main(){long int b,i,k,m,n,w=0;printf("[m,n]中整数分解质因数(乘积形式).\n");printf("请输入m,n:");scanf("%ld,%ld",&m,&n);for(i=m;i<=n;i++) // i为待分解的整数{ printf("%ld=",i);b=i;k=2;while(k<=sqrt(i)) // k为试商因数{if(b%k==0){b=b/k;if(b>1){printf("%ld*",k);continue; // k为质因数,返回再试}if(b==1) printf("%ld\n",k);}k++;}if(b>1 && b<i)printf("%ld\n",b); // 输出大于i平方根的因数if(b==i){printf("(素数!)\n");w++;} // b=i,表示i无质因数}}2-4 基于素数代数和的最大最小定义和:⨯+⨯±±++nsn=n⨯⨯-9⨯2()1)12(775)(+3153(和式中第k项±(2k-1)*(2k+1)的符号识别:当(2k-1)与(2k+1)中至少有一个素数,取“+”;其余取“-”。

相关文档
最新文档