`
java-mans
  • 浏览: 11817691 次
文章分类
社区版块
存档分类
最新评论

hdu 2136Largest prime factor n的最大因子是第几个素数

 
阅读更多

Largest prime factor

Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3961Accepted Submission(s): 1393


Problem Description
Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.

Input
Each line will contain one integer n(0 < n < 1000000).

Output
Output the LPF(n).

Sample Input
1 2 3 4 5

Sample Output
0 1 2 1 3

Author
Wiskey

Source

用筛选法AC

//求一个数的最大素因子是第几个素数,打表  
#include <stdio.h>
#include <string.h>
#define N 1000000
int a[N];
int main()
{
    int n=0,i,t,j;
    memset(a,0,sizeof(a));
	for(i=2;i<=N;i++)//对当前数的每个数的倍数进行赋值素数编号 可以覆盖哦 因为要覆盖为最大因子
	{
		if(a[i]==0)
		{
			n++;//素数i的位置
		    for(j=i;j<=N;j+=i)//构造出j的暂时最大素数因子的位置
			    a[j]=n;
		}
	}
	while(scanf("%d",&i)!=EOF)
	{
		printf("%d\n",a[i]);
	}

    return 0;
}



如果用打印素数表后 然后分解质因子 找到最大质因子 输出对应位置超时 贴下超时代码

#include<stdio.h>
#include<math.h>
#include<string.h>
int vis[1000000+100];
int prime[80000],c;
void get_prime()
{
	int i,j,n,m;
	c=0;
	n=1000000;
	m=(int)sqrt(n+0.5);
	memset(vis,0,sizeof(vis));
	for(i=2;i<=m;i++) if(!vis[i])
	{
		for(j=i*i;j<=n;j+=i) vis[j]=1;
	}
	for(j=2;j<=n;j++) if(!vis[j])
		prime[c++]=j;
}
int main()
{
	int  j,n,max;
	get_prime();
	while(scanf("%d",&n)!=EOF)
	{
		if(n==1) {printf("0\n");continue;}
		max=0;
         for(j=0;j<c;j++)
		 {
			 if(n<prime[j]) break;
			 while(n%prime[j]==0)
			 {
				 n/=prime[j];
				 if(j>max) max=j;
			 }
		 }
		 printf("%d\n",max+1);
	}
	return 0;
}


分享到:
评论

相关推荐

    HDU 2136 Largest prime factor

    Largest prime factor Everybody knows any number can be combined by the prime number. Now, your task is telling me what position of the largest prime factor. The position of prime 2 is 1, prime 3 is 2,...

    hdu.rar_hdu

    HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...

    hdu1250高精度加法

    具体地,题目涉及到了斐波那契数列的一个变种:F(1)=1, F(2)=1, F(3)=1, F(4)=1, F(n&gt;4)=F(n-1)+F(n-2)+F(n-3)+F(n-4),其中n &gt; 4。这里的关键是要能够计算出F(n)的值,而由于这个序列的增长速度非常快,传统的整数...

    HDU ACM 2005第几天 txt格式

    该题目来自HDU ACM(浙江工业大学在线评测系统),编号为2005的题目“第几天”。此题目要求输入一个特定日期(格式为“年/月/日”),然后计算并输出这一天是一年中的第几天。例如,输入“2023/1/1”,则应该输出“1...

    hdu1290解题报告

    - 对于第 _n_ 个平面,它会与之前的 _n-1_ 个平面相交,因此可以增加 _n \times (n - 1) / 2 + 1_ 个新区域。 根据以上分析,我们可以得到 _n_ 个平面分割空间的递推公式: \[ f(n) = f(n-1) + n \times (n - 1) /...

    HDU_2010.rar_hdu 2010_hdu 20_hdu acm20

    【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...

    hdu动态规划算法集锦

    - 定义状态$f[j]$表示在第$j$个地点抢劫的最大收益。 - 状态转移方程:$f[j] = \max\{f[j], f[j - q[i].money] + q[i].v\}$,其中$q[i].money$是第$i$个地点的价值,$q[i].v$是第$i$个地点的花费。 - 初始条件:$...

    HDU DP动态规划

    例如,一个简单的动态规划问题可以是“斐波那契数列”,其中状态通常定义为第n个斐波那契数,状态转移方程为F(n) = F(n-1) + F(n-2),初始条件为F(0) = 0,F(1) = 1。 在HDU的DP题目中,可能会有各种复杂度的题目,...

    ACM HDU题目分类

    ACM HDU 题目分类是指对 HDU 在线判题系统中题目的分类,总结了大约十来个分类。这些分类将有助于编程选手更好地理解和解决问题。 DP 问题 DP(Dynamic Programming,动态规划)是一种非常重要的算法思想,在 ACM ...

    HDU题目java实现

    【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...

    hdu acm 教案(7)

    在这个章节中,你可能会学到以下几个关键知识点: 1. **深度优先搜索(DFS, Depth-First Search)**:DFS是一种遍历或搜索树(或图)的算法,它沿着树的深度方向进行探索,直到达到叶子节点或者回溯到一个未被访问...

    解题代码 hdu1241

    - **`#define N 101`**:定义了一个宏 `N`,用于表示矩阵的大小,这里设置为101。 - **`char graph[N][N];`**:定义一个二维字符数组 `graph`,用来存储问题中的地图数据。 ##### 2. DFS 函数 ```c void dfs(int x...

    hdu 1695 GCD(欧拉函数+容斥原理).docx

    可以用容斥原理,把 y 与 1 ~ a 互质对数问题转换为 y 的质数因子在 1 ~ a 范围内能整除的个数(质数分解和容斥关系),s 一下即可。 容斥原理是指,在数论中,容斥原理是一种常用的计算技术,用于计算满足某些条件...

    hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj

    【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...

    杭电ACMhdu1163

    【标题】:杭电ACMhdu1163 【描述】:这是一道源自杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的ACM编程竞赛题目,编号为1163。这类问题通常需要参赛者利用计算机编程解决数学、逻辑或算法上的挑战,...

    HDU acm-PPT课件

    【ACM入门与提高:HDU ACM竞赛课程详解】 ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,简称ICPC或ACM/ICPC)是一项全球性的竞赛,旨在激发大学生对计算机科学的兴趣,提升他们的...

    hdu 1257 最低拦截系统 lis

    题目名为“hdu 1257 最低拦截系统”,这里的“最低拦截系统”实际上是描述了一个问题场景,而具体的问题通过描述部分可以得知是要求找出给定数组中的最长递增子序列的长度。这里所谓的“最低拦截系统”可能是为了...

    HDU1059的代码

    HDU1059的代码

    hdu 3333 turing tree 解题报告

    题目“HDU 3333 Turing Tree”要求解决的问题是:给定一个整数序列和一系列区间,计算每个区间内不重复数字的和。由于数据规模较大(N ,000, K ,000),直接的暴力方法效率过低,因此我们需要采用一种更高效的数据...

    hdu1001解题报告

    hdu1001解题报告

Global site tag (gtag.js) - Google Analytics