数论总结

地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:
1. 100万元必须被正好分成若干份(不能剩余)。
  每份必须是7的若干次方元。
  比如:1元, 7元,49元,343元,...
  
2. 相同金额的份数不能超过5份。

3. 在满足上述要求的情况下,分成的份数越多越好!

请你帮忙计算一下,最多可以分为多少份?
package 训练;

public class 奇怪的捐赠
{

	public static void main(String[] args)
	{
		int number=1000000;
		String string=""+Integer.toString(number, 7);
		System.out.println(string);
		
	}

}

天平称重


用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有5个砝码,重量分别是1,3,9,27,81
则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
例如:
用户输入:
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1

要求程序输出的组合总是大数在前小数在后。
可以假设用户的输入的数字符合范围1~121。
package 数论;

import java.util.Scanner;

public class 天平称重
{
	static int n;
	private static Scanner scanner;
	public static void main(String[] args)
	{
		scanner = new Scanner(System.in);
		n=scanner.nextInt();
		int x[]={1,3,9,27,81};
		f(x,0,0,"");//dfs搜索做法
		
		f2(19);//进制做法 把2变-1
	}

	private static void f2(int i)
	{
		int a=i%3;
		if (i==0)
		{
			return;
		}
		if (a==2)
		{
			f2((i+1)/3);
			a=-1;
		}
		else {
			f2(i/3);
		}
		System.out.print(a);
	}

	private static void f(int[] x, int i,int count,String string)
	{
		if (i==x.length)
		{
			if (count==n)
			{
				if (string.charAt(0)=='+')
				{
					string=string.substring(1);
				}
				System.out.println(string);
			}
			return;
		}
		
		for (int j = -1; j <=1; j++)
		{
			
			if (j==-1)
			{
				f(x, i+1, count+j*x[i], new String(j*x[i]+string));
			}
			if (j==0)
			{
				f(x, i+1, count+j*x[i], new String(string));
			}
			if (j==1)
			{
				f(x, i+1, count+j*x[i], new String("+"+(j*x[i])+string));
			}
		}
	}
}

有理数表示


如果求 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + .... + 1/100 = ?

要求绝对精确,不能有误差。
package 训练;

import java.math.BigInteger;

public class 有理数
{

	public static void main(String[] args)
	{
		Rati rati=new Rati("1", "2");
		for (int i = 3; i <=10; i++)
		{
			rati=rati.add(new Rati("1", ""+i));
			System.out.println(rati);
		}
	}

}
class Rati
{
	BigInteger fenzi;
	BigInteger fenmu;
	public Rati(String string1, String string2)
	{
		super();
		this.fenzi = new BigInteger(string1);
		this.fenmu = new BigInteger(string2);
	}
	@Override
	public String toString()
	{
		return "Rati [fenzi=" + fenzi + ", fenmu=" + fenmu + "]";
	}
	public Rati add(Rati rati)//A/B+C/D=(AD+BC)/BD
	{
		BigInteger fenzi=this.fenzi.multiply(rati.fenmu).add(this.fenmu.multiply(rati.fenzi));
		BigInteger fenmu=this.fenmu.multiply(rati.fenmu);
		BigInteger gcd=fenzi.gcd(fenmu);
		return new Rati(fenzi.divide(gcd).toString(), fenmu.divide(gcd).toString());
		
	}
}

素数


第1个素数是2,第2个素数是3,...
求第100002(十万零二)个素数

筛选法与暴力法 在 100002的数量级 感觉两组方法时间都差不多
但是暴力法明显更快嘛

所以在如果是填空题就暴力咯
如果是编程题可能会有很大的数量级 所以就筛选

package 训练;

public class 筛选法求素数
{
	//求第100002(十万零二)个素数
	public static void main(String[] args)
	{
		int number=10000*1000;
		byte []bs=new byte[number];
		int x=100002;
		for (int i = 2; i < number/2; i++)
		{
			if (bs[i]==1)
			{
				continue;
			}
			for (int j = 2; j*i <= number; j++)
			{
				if (i*j<number)
				{
					bs[i*j]=1;
				}
			}
		}
		int count=0;
		for (int i = 2; i < number; i++)
		{
			if (bs[i]!=1)
			{
				count++;
				if (count==x)
				{
					System.out.println(i);
				}
			}
			
		}
		
		f();//暴力
	}

	private static void f()
	{
		int number=10000*1000;
		int count=0;
		int x=100002;
		for (int i = 2; i <=number; i++)
		{
			if (is(i))
			{
				count++;
				if (count==x)
				{
					System.out.println(i);
				}
			}
		}
		
	}

	private static boolean is(int i)
	{
		for (int j = 2; j <= Math.sqrt(i); j++)
		{
			if (i%j==0)
			{
				return false;
			}
		}
		return true;
	}

}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《解析与概率数论导引》是一本介绍解析和概率数论的导引性书籍。解析和概率数论是数学中的两个重要分支,通过本书的学习可以初步了解这两个领域的基本概念和方法。 首先,本书从解析数论方面入手,介绍了解析数论的基本概念和方法。解析数论是研究数论问题的一种方法,它借助解析方法和复变函数的理论来研究数论中的一些问题。本书详细介绍了解析数论中的一些基本概念,例如高斯和黎曼等函数,以及解析逼近和解析数论中的一些定理和猜想,如黎曼猜想。 其次,本书还涉及了概率数论的内容。概率数论是概率论和数论的结合,研究了数论中的随机性质和随机现象。本书介绍了概率数论中的一些基本概念,如离散随机变量和连续随机变量,以及概率数论中的一些常用定理和技巧,如拉普拉斯定理和特征函数的应用等。 通过学习本书,读者可以初步了解解析和概率数论的基本概念和方法,对这两个领域有一个整体的认识。此外,本书还提供了一些习题和案例分析,帮助读者更好地理解和应用所学知识。 总之,《解析与概率数论导引》是一本介绍解析和概率数论的导引性书籍,通过学习本书可以初步了解解析和概率数论的基本概念和方法,对这两个领域有一个整体的认识。这对于对解析和概率数论感兴趣的读者来说是一本很有价值的学习资料。 ### 回答2: 《解析与概率数论导引》是一本介绍解析与概率数论基础知识的PDF文件。这本导引首先介绍了解析的基本概念和理论,包括复数域上的解析函数、柯西—黎曼方程及其应用、解析函数的级数展开等。进一步,导引还涉及到解析函数的性质,如极值原理、最大模原理等。这些知识为理解解析函数的基本特性提供了基础。 其次,导引也包含了对概率数论基础的介绍。概率数论是数学中的一个重要分支,主要研究随机事件及其数学性质。这本导引详细介绍了概率论的基本概念和原理,包括事件、概率、条件概率、随机变量等。在此基础上,导引进一步阐述了期望、方差、随机过程等概念,以及它们的计算方法和性质。 通过解析与概率数论导引,读者可以获得解析与概率数论的基础知识。这些知识在数学理论研究和实际问题中有着广泛的应用,尤其在统计学、金融学、计算机科学等领域中发挥着重要作用。同时,导引中还涉及了一些实际例子和习题,帮助读者巩固所学知识。 总结起来,解析与概率数论导引PDF是一本介绍解析与概率数论基础知识的资料。通过阅读此导引,读者可以系统地学习解析函数和概率数论的基本理论和应用。这对于提高数学素养、解决实际问题具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值