数字用加法分解之谜

数字用加法分解之谜

个人信息:就读于燕大本科软件工程专业 目前大三;

本人博客:google搜索“cqs_2012”即可;

个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;

编程语言:C++ ;

编程坏境:Windows 7 专业版 x64;

编程工具:vs2008;

制图工具:office 2010 powerpoint;

硬件信息:7G-3 笔记本;

真言

蜗牛虽慢,却不曾后退。

题目

数字用加法分解之谜:

1+2 = 3

4+5 = 9

2+3+4 = 9.

等式的左边都是两个或两个以上连续的自然数相加,那么是不是所有的整数都可以写成这样的形式呢?

解法

分析:我们定义一个整数为 n

如果n为奇数 ,那么它肯定两个连续的自然数

如果n为偶数,如果它有奇数因子,那么它也是可以分解的;如果没有奇数因子,那么它不能被分解了

算法

设计算法用C++表示如下

// 只考加法的面试题:编程之美 211页
	bool Number::Continue_number_sum_equal_given(unsigned int a)
	{
	// 检查是否是偶数
		if( a%2 != 0 )
			return true;

	// 如果是偶数
		else
		{
			unsigned int max_yinzi = a/2;
			for( int i = 3; i <= max_yinzi;i = i+2 )
			{

			// 如果有奇数因子
				if(a % i == 0)
					return true ;
			}

		// 如果没有奇数因子
			return false ;
		}
	}

数字用加法分解之谜,布布扣,bubuko.com

时间: 2024-08-11 05:43:55

数字用加法分解之谜的相关文章

Java 多个数字的加法

设计思想: 从键盘输入数字,string类型转换成int,然后数字相加,最后输出. 程序流程图: 源程序代码: //huangyi 2015.9.24 数字相加import java.util.Scanner;public class Test {  public static void main (String[] args){   Scanner num = new Scanner(System.in);   //从键盘输入数据   System.out.println("请输入五个数:&q

Python 小议2:用循环和递归函数分别求100以内的数字的加法和乘法。

今晚看了函数的递归,在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 联想到之前用循环写的关于求一百以内的数的和,目前看来基本上有三种写法: 1. for 循环 sum = 0 for i in range(1,101): sum = sum +i print sum 2 while 循环: sum =0 i =1 while i <101: sum =

EularProject 38:数字组合1-9分解为数字与1到n的乘积的和

Pandigital multiples Problem 38 Take the number 192 and multiply it by each of 1, 2, and 3: 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576 By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated produ

猜数字游戏代码

#include <iostream> #include <cstdlib> #include <conio.h> #include <ctime> using namespace std; //清屏 void ClearScreen() { system("cls"); } //显示菜单 void ViewMenu() { cout<<"******************"<<endl; c

使用JAVAEE编写简单的加法程序

首先选择菜单file-new-maven project,勾选"Create a &simple project (skip archetype selection)"项: 新建Maven项目,新建完成项目之后首先配置web.xml(WEB-INF目录下)文件找到<welcome-file>修改为你新建的主页面的名称及文件名</welcome-file>,我新建的是add所以为<welcome-file>add.jsp</welcome

学习笔记--Maven+Eclipse Java EE实例:加法计算器

环境配置 所需软件:Maven.Eclipse-mars.jdk1.7(本次所用软件皆为绿色版,无需安装). 解压Maven.Eclipse-mars.jdk1.7,集中到一个文件夹方便管理,例如笔者本次将所有软件.文件集中到X:\jee文件夹中. 以上相当于省去了安装的过程和不必要的麻烦,接下来还得做一些更改.在eclipse的配置文件eclipse.ini,修改虚拟机路径,在-vmargs之前添加-vm X:\jee\jdk1.7\bin\javaw.exe(X为你的盘符). 注意:用写字板

2548 自然数积分解

2548 自然数积分解 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 把自然数N分解为若干个自然数之积,输出方案数. 输入描述 Input Description 自然数N,(1≤n≤2000000000) 输出描述 Output Description 方案数 样例输入 Sample Input 20 样例输出 Sample Output 4 数据范围及提示 Data Size & Hint 20 可分为 20 4 52

JavaScript学习笔记3之 数组 &amp; arguments(参数对象)&amp; 数字和字符串转换 &amp; innerText/innerHTML &amp; 鼠标事件

一.Array数组 1.数组初始化(Array属于对象类型) 1 /*关于数组的初始化*/ 2 //1.创建 Array 对象--方法1: 3 var arr1=[]; 4 arr1[0]='aa';//给数组元素赋值 5 arr1[1]='bb'; 6 arr1[2]='cc'; 7 arr1[3]='dd'; 8 console.log(arr1);//["aa","bb","cc","dd"] 9 //1.创建 Arra

时间序列 R 07 时间序列分解 Time series decomposition

一个时间序列可以分解为多个模型的组合 1.1 时间序列的组成 1.1.1 时间序列组成模式 三种时间序列模式(不计剩余残差部分) 1. 趋势Tend :比如线性趋势,先增加后降低的整体趋势 2. 季节性Seasonal :以时间为固定周期,呈现循环的特性 3. 周期性Cyclic:在以不固定周期不断震荡,通常周期性至少持续2年 下图就是讲时间序列分解之后的结果,应该比较容易理解上面的定义 下图是周期性的表现之一: 每个周期的震荡持续了6-10年,整体没有什么明显的趋势,第一幅图中trend包含了