自然数

求N以内的所有质数(素数)

喜夏-厌秋 提交于 2019-12-27 05:26:50
质数定义:是指在大于1的自然数中,除了1和它本身以外不再有其他 因数 的自然数。 /** * 求n以内的质数(素数) * param int $n * return array */ function prime_numbers(int $n):array { $result = [2]; //偶数只有2是质数 for ($i = 3; $i <= $n; $i+=2) { //2以外的偶数都不是质数,所以只遍历奇数 $flag = 0; for($j = 3; $j < $n; $j+=2){ if($i % $j == 0){ $flag++; } } if($flag == 1){ $result[] = $i; } } return $result; } //example print_r(prime_numbers(10)); //output Array ( [0] => 2 [1] => 3 [2] => 5 [3] => 7 ) 来源: CSDN 作者: 青鬆下的坚躯 链接: https://blog.csdn.net/liuensong/article/details/103638241

数学归纳法

自古美人都是妖i 提交于 2019-12-22 06:16:58
数学归纳法初步 先介绍一种数学归纳法 首先,我们定义P(n)为关于自然数n的命题 #第一数学归纳法 (1)找到自然数n,使得P(n)成立; (2)假设P(k)(k≥n,k∈N)成立,若能证得P(n+1)也成立,则对于所有大于等于n的自然数,命题都成立. 具体这是怎么回事先不给出,之后我会慢慢更新。 来源: CSDN 作者: qq_31909473 链接: https://blog.csdn.net/qq_31909473/article/details/103551762

C语言 角谷定理 递归法 初学

情到浓时终转凉″ 提交于 2019-12-20 23:53:08
C语言 角谷定理 递归法 初学 题目:角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。 代码: 计数并输出每步结果. # include "stdio.h" # include "stdlib.h" int count = 0 ; int jg ( int x ) { if ( x != 1 ) { if ( x % 2 == 0 ) { printf ( "%d\n" , x ) ; jg ( x / 2 ) ; count ++ ; } else if ( x % 2 != 0 ) { printf ( "%d\n" , x ) ; jg ( 3 * x + 1 ) ; count ++ ; } } if ( x == 1 ) printf ( "%d\n" , x ) ; } int main ( ) { int x ; printf ( "输入一个自然数x:" ) ; scanf_s ( "%d" , & x ) ; jg ( x ) ; printf ( "一共经历了%d次运算!\n" , count ) ; system ( "pause" ) ; return 0 ; } 正在学习 有什么不妥的 多提意见… 来源: CSDN 作者: Aealen 链接: https:

P1028 数的计算

为君一笑 提交于 2019-12-17 15:24:04
P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 n): 先输入一个自然数 n( n ≤ 1 0 0 0),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式 输入格式:   1 个自然数 n ( n ≤ 1 0 0 0) 输出格式:   1 个整数,表示具有该性质数的个数。 输入输出样例 输入: 6 输出: 6 分析:   这道题理论上是可以用暴力递归的,但是会超时。   也可以写递推公式:   首先,f[n]表示输出符合的个数。   n= 0、n= 1时,f[n]= 1   n= 2,f[n]= 2   n= 3,f[n]= 2   n= 4,f[n]= 4   n= 5,f[n]= 4   n= 6,f[n]= 6  n= 7,f[n]= 6   可以看出,2n与2n+1(n为非负整数)的答案是一样的。   以8为例,    8       18    28   38   48       128 138 148 248                1248   排序树??   ① 当我们把8和8下面的左三棵子树放在一起,并将所有的8都改成7,我们能发现,我们得到了n=7时的所有解。//n-1       7     

自然数的拆分问题 字典序

独自空忆成欢 提交于 2019-12-17 04:22:52
转载请注明出处 题目描述 对于大于1的自然数N,可以拆分成若干个大于等于1的自然数之和。 Input 一个大于1的自然数N Output 所有的拆分情况.按字典序排列。 Sample Input 6 Sample Output 6=1+1+1+1+1+1 6=1+1+1+1+2 6=1+1+1+3 6=1+1+2+2 6=1+1+4 6=1+2+3 6=1+5 6=2+2+2 6=2+4 6=3+3 6=6 Hint 注意观察数字的变化规律 同一层的数从左往右,从右往左都分析下。 上下两层的关系也分析下 1 /** 2 网址:http://www.codeup.cn/problem.php?id=2910 3 题目:自然数的拆分问题 字典序 4 */ 5 6 #include <stdio.h> 7 int N; 8 int result[100]; 9 10 void print(int n){ 11 int i; 12 printf("%d=",N); 13 for(i = 0; i < n - 1; i++){ 14 printf("%d+",result[i]); 15 } 16 printf("%d\n",result[i]); 17 } 18 19 /** 20 cur:当前要填的数字 21 leave:差 22 */ 23 void search(int cur

编程竞赛--关于\"数\"的概念

混江龙づ霸主 提交于 2019-12-08 08:44:25
质数:质数是指在 大于1的自然数 中,除了1和它本身以外不再有其 他因数 的自然数。 合数:合数是指自然数中除了能被1和本身整除外,还能被其他数(0除外)整数的数。与之相对的是质数,而1既不属于质数也不属于合数。最小的合数是4。 因数:因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。 奇数:指不能被2整除的数 ,数学表达形式为:2k+1, 奇数可以分为正奇数和负奇数。 偶数:是能够被2所整除的整数。正偶数也称双数。 某数是2的倍数,它就是偶数,可表示为2n,0是偶数。 互质:是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。 公约数:亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”; 自然数:指用以计量事物的件数或表示事物次序的数。即用数码0,1,2, 3 ,4……所表示的数。 关于0:“ 整数包括0。但0既不是正整数,也不是负整数,它是介于正整数和负整数的数。 有理数:是整数(正整数、0、负整数)和分数的统称,是整数和分数的集合。 来源: https://www.cnblogs.com/handsometaoa/p/12004571.html

所谓算法——就是要比别人观察的更多。

强颜欢笑 提交于 2019-12-06 14:11:27
算法是一步一步来的,不是说你一开始就必须想到正确的算法,而是想到一个大概的方向,然后慢慢优化,慢慢朝正确答案靠拢。 就拿整数划分这道题来举例。 题意: 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。 当n=7共14种拆分方法: 7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2+2 7=1+1+1+4 7=1+1+2+3 7=1+1+5 7=1+2+2+2 7=1+2+4 7=1+3+3 7=1+6 7=2+2+3 7=2+5 7=3+4 这道题一开始我想到的只是递归,从7开始,枚举1~7的所有自然数,比如一开始枚举1,然后算出7-1=6,又将6加入到递归之中……不断重复上述过程。 然后就可以得到: 可以看到第二个和第三个是重复的……我要怎么解决那些重复的元素呢? 首先我第一个想到的办法是用一个二维数组vis[i][j]来记录每一条7=x+x+……+x之中所有自然数出现的次数,其中i代表那个自然数,j代表第几条数据,比如第一条vis[1][1]=7,第二条vis[1][2]=5,vis[2][2]=1。 然后对于当前的那一条数据,遍历之前所有的数据,发现一模一样的就不输出。 比如说:vis[1~7][2] = 5 1 0 0 0 0 0 vis[1~7][3] = 5 1 0 0 0 0 0 他们两个是一样的

5-3 自然数的拆分 (20 分)

时光总嘲笑我的痴心妄想 提交于 2019-12-05 14:55:40
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。 当n=7共14种拆分方法: 7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2+2 7=1+1+1+4 7=1+1+2+3 7=1+1+5 7=1+2+2+2 7=1+2+4 7=1+3+3 7=1+6 7=2+2+3 7=2+5 7=3+4 输入格式: 输入n, 1<n<20。 输出格式: 按字典序输出具体的方案。 输入样例: 在这里给出一组输入。例如: 7 输出样例: 7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2+2 7=1+1+1+4 7=1+1+2+3 7=1+1+5 7=1+2+2+2 7=1+2+4 7=1+3+3 7=1+6 7=2+2+3 7=2+5 7=3+4 这里我们同样采用回溯法;每个结点优先从1开始减去当前剩余数,减数优先级递减直到n-1结束;随后判断是否可减;当出现余数既不为0又小于当前减数时则判断不可减,减去当前分支;具体算法如下: package 宿題; import java.io.*; public class PTASplittingNumbers {   static int A;   public static void main(String args[]