Acdream 1670 数一的偶像2 (ACdreamer java 专场)
2015-09-23 08:08
337 查看
【题目链接】:click here~~
【题目大意】:
数一的另一个偶像是欧拉!同样的,欧拉大人有很多的欧拉定理以及大名鼎鼎的欧拉函数。
欧拉函数phi(x)表示的是不超过x的正整数中与x互质的数的个数。数一想知道不超过n的整数中使得phi(x)/x最小的x是多少?
多组数据,每组数据只有一个整数n,n不超过100位
输出一个整数x,如果有多个phi(x)/x相等的x,请输出最小的那一个x。
【思路】这题跟HDU 4002是一样的,预处理素因子的乘积。
代码:
【题目大意】:
Problem Description
数一的另一个偶像是欧拉!同样的,欧拉大人有很多的欧拉定理以及大名鼎鼎的欧拉函数。欧拉函数phi(x)表示的是不超过x的正整数中与x互质的数的个数。数一想知道不超过n的整数中使得phi(x)/x最小的x是多少?
Input
多组数据,每组数据只有一个整数n,n不超过100位
Output
输出一个整数x,如果有多个phi(x)/x相等的x,请输出最小的那一个x。
Sample Input
1 2 3
Sample Output
1 2 2
【思路】这题跟HDU 4002是一样的,预处理素因子的乘积。
代码:
/* * this code is made by herongwei * Problem: 1670 * Verdict: Accepted * Submission Date: 2015-09-22 22:47:57 * Time: 172MS * Memory: 26376KB */ //package ac0901; import java.io.*; import java.util.*; import java.math.BigInteger;//声明BigInteger大数类 import java.lang.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); final int N=100005; boolean[] ok=new boolean ; int [] prime= new int ; int cnt=0; BigInteger [] fac= new BigInteger [65]; for(int i=0; i<N; ++i) ok[i]=false; for(int i=2; i<N; ++i) { if(!ok[i]) prime[cnt++]=i; for(int j=0; j<cnt&&i*prime[j]<N; ++j) { ok[i*prime[j]]= true; if(i%prime[j]==0) break; } } fac[0]=BigInteger.ONE; for(int i=1; i<=60; ++i) { fac[i]=fac[i-1].multiply(BigInteger.valueOf(prime[i-1])); } BigInteger n; //int t; //t=cin.nextInt(); //while(t-->0) while(cin.hasNext()) { n=cin.nextBigInteger(); for(int i=1; i<=60; ++i) { if(fac[i].compareTo(n)>0) { System.out.println(fac[i-1]); break; } } } } }
相关文章推荐
- MyEclipse迅速
- 解决ECLIPSE 卡死的方法
- eclipse android 不会自动生成R.java文件和包的解决办法
- java 单一登录
- java正则
- java正则
- 几个主流的Java连接池整理
- java获取当前日期时间代码总结
- java获取当前日期时间代码总结
- Error与Exception的区别,Java常见异常Execption总结
- Error与Exception的区别,Java常见异常Execption总结
- 所有javax包
- 所有javax包
- HDFS的java操作方式
- httl开源JAVA模板引擎,动态HTML页面输出
- httl开源JAVA模板引擎,动态HTML页面输出
- java中常用的字符串的截取方法
- java中常用的字符串的截取方法
- Java中字符串中子串的查找共有四种方法(indexof())
- Java中字符串中子串的查找共有四种方法(indexof())