算法分析习题(1)

12.1

1.质因子是在数论里,某一正整数的质因子指能整除该数的质数整数.

两个没有共同质因子的正整数称为互质。正整数的因数分解给出一连串的质因子;所有质因子相乘后。质因子如重复会以指数表示。根据Fundamental theorem of arithmetic,任正整数有独一无二的质因子分解式

1-100以内的质数(素数)有25个,1既不是素数也不是合数。0和1既不是质数、也不是合数。 首先:数的整除研究的非0自然数的范畴,所以质数和合数肯定不包括0。 再来看看自然数“1”。 质数是指含有1和它本身2个因数的自然数,而自然数“1”只有本身1这1个因数,所以自然数“1”不符合质数的要求,那么“1”不是质数。 合数是指除了1和它本身2个因数外,还含有其它因数的数。也就是说合数至少有3个因数,显然自然数“1”不符合合数的定义,所以1既不是质数,也不是合数。

最多约数问题 转自: http://blog.csdn.net/net_assassin/article/details/8960725

时间: 2024-10-15 13:53:26

算法分析习题(1)的相关文章

数据结构基本概念及算法和算法分析 -- 引自《新编数据结构习题与解析》(李春葆等著)

本文引自<新编数据结构习题与解析>(李春葆等著)第1章. 1. 数据结构的基本概念 1.1 数据 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称.例如,整数.实数和字符串都是数据. 1.2 数据元素 数据元素也称为节点,是表示数据的基本单元,在计算机程序中通常作为一个整体进行考虑和处理. 1.3 数据项 数据项是数据的最小单位.数据元素可以由若干个数据项组成.例如,学生记录就是一个数据元素,它由学号.姓名.性别等数据项组成. 1.4 数据对象

《数据结构与算法分析:C语言描述_原书第二版》CH2算法分析_课后习题_部分解答

对于一个初学者来说,作者的Solutions Manual把太多的细节留给了读者,这里尽自己的努力给出部分习题的详解: 不当之处,欢迎指正. 1.  按增长率排列下列函数:N,√2,N1.5,N2,NlogN, NloglogN,Nlog2N,Nlog(N2),2/N,2N,2N/2,37,N2logN,N3.指出哪些函数以相同的增长率增长. 答:排列如下2/N < 37 < √2 < N < NloglogN < NlogN < Nlog(N2) < Nlog2

数据结构与算法分析(C语言描述)习题1.4

题目:C提供形如 #include filename 的语句,它读入文件filename并将其插入到include语句处.include语句可以嵌套:换句话说,文件filename本身还可以包含include语句,但是显然一个文件在任何链接中都不能包含它自己.编写一个程序,使它读入被include语句修饰的一个文件并且输出这个文件. 思路: 1.函数printHeadfile()接受一个文件路径,并打开该路径文件. 2.成功打开后,不断读入文件内一行数据buf.如果该行是一个“#include

数据结构与算法分析(C语言描述)习题2.13

问题描述: a. 编写一个程序来确定正整数N是否是素数. b. 你的程序在最坏的情形下的运行时间是多少(用N表示)? c. 令B等于N的二进制表示法中的位数.B的值是多少? d. 你的程序在最坏的情形下的运行时间是多少(用B表示)? e. 比较确定一个20(二进制)位的数是否是素数和确定一个40(二进制)位的树是否是素数的运行时间. f. 用N或B给出运行时间更合理吗?为什么? 思路:检查N是否是偶数(或2)以及检查它是否能被3, 5, 7, ... N½整除. a.代码如下: int isPr

Java数据结构习题_算法分析

2.设T1(N)=O(f(N)),T2(N)=O(f(N)),则: T1(N)-T2(N)=o(f(N))           False,若1位2N,2为N T1(N)/T2(N)=O(1)               False,为常数而不是1. 7.分析时间复杂度 (1)for(i:0~n){for(j:0~i)}该循环的复杂度为O(N2) (2) 1 sum = 0; 2 for( i = 1; i < n; i++) 3 for( j = 1; j < i * i; j++) 4 i

数据结构与算法分析(C语言描述)习题2.7

问题描述:假设需要生成前N个自然数的一个随机置换.例如,{4,1,2,5,2}和{3,1,4,2,5}就是合法的置换,但{5,4,1,2,1}却不是,因为数1出现了两次而数3缺没有.这个程序常常用于模拟一些算法.我们假设存在一个随机数生成器randInt(i, j),它以相同的概率生成i和j之间的一个整数.下面是三个算法: 1.如下填入A[0]到A[N-1]的数组A:为了填入A[i],生成随机数直到它不同于已经生成的A[0],A[1], ... , A[i-1]时,再将其填入A[i]. 2.同算

数据结构与算法分析(C语言描述)习题1.3

题目:只使用处理I/O的printDigit函数,编写一个过程以输出任意实数. 思路:取得数的整数部分()和小数部分().整数部分直接用类型强制转换,然后用数减去整数部分得到小数部分. 1.打印整数部分: void printOut(int n) { if (abs(n) >= 10) { printOut(n / 10); printDigit(abs(n % 10)); } else printDigit(n); } 至于printDigit(),感觉有点鸡肋.为了迎合题目,加上了. voi

数据结构与算法分析(C语言描述)习题1.1

题目:编写一个程序解决选择问题.令k = N / 2.画出表格显示你的程序对于N为不同值时的运行时间. (设有一组N个数确定其中第k个最大者,称选择问题(selection problem).) 思路:读入前k个数到临时数组tmp(并按降序排列).然后逐个读取后续数字X,当X大于第k个数时,将其加入数组tmp(并按降序排列).最后返回位置k-1上的值. 实现: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <tim

数据结构与算法分析(C语言版)第二章习题2.7代码实现

#include<stdio.h> #include<stdlib.h> #include<time.h> void swap(int *a,int *b) {     if(*a!=*b)     {         /*          算法1          *a+=*b;          *b=*a-*b;          *a-=*b;                    算法2          *a*=*b;          *b=*a/*b;