博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3048 HDU2710 Max Factor
阅读量:7104 次
发布时间:2019-06-28

本文共 1086 字,大约阅读时间需要 3 分钟。

USACO 2005 October Bronze

筛选法不仅能够用来计算最小的若干素数,也可以用来求整数的最大公因子。

问题链接:。基础训练级的题,用C语言编写。

问题简述测试数据有多组,每组先输入n,然后输入n个正整数,输出n个正整数中,素因子最大的那个数。

问题分析:可以使用类似于筛选法的过程求得一定范围内的各个整数的最大素因子。

程序中,打表是合适的。数组mpf[]中存放最大素因子,若mpf[i]=x,则x为i的最大素因子。

AC通过的C语言程序如下:

/* POJ3048 HDU2710 Max Factor */#include 
#include
#define MAXN 20000/* 若mpf[i] = x,则x为i的最大因子(素数) mpf = maxprimefactor */int mpf[MAXN+1]/* = {1, 1, 2, 3}*/;void maketabel(int n){ int i, j; memset(mpf, 0, sizeof(mpf)); mpf[0] = 0; mpf[1] = 1; /* 对于偶数,令其因子暂时为2 */ for(i=2; i<=n; i+=2) mpf[i] = 2; /* 对于素数i,设置j=k*i的暂时因子为i */ for(i=3; i<=n; i+=2) if(0 == mpf[i]) for(j=i; j<=n; j+=i) mpf[j] = i;}int main(void){ int n, max, val, i; maketabel(MAXN); while(scanf("%d", &n) != EOF) { scanf("%d", &val); max = val; for(i=2; i<=n; i++) { scanf("%d", &val); if(mpf[val] > mpf[max]) max = val; } printf("%d\n", max); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564437.html

你可能感兴趣的文章
《你不知道的JavaScript》整理(二)——this
查看>>
提升windows 2000的启动速度
查看>>
iftop工具
查看>>
java-第二章-华氏温度转摄氏温度
查看>>
html查看器android
查看>>
从零打造B/S 自动化运维平台 (一、自动化运维平台的应用及业务流程)
查看>>
SQL Server 2012 AlwaysOn高可用配置之三:安装“故障转移群集”功能
查看>>
shell中使用FTP
查看>>
Oracle12C多租户管理用户、角色、权限
查看>>
Efficient Editing With vim
查看>>
浅谈秒杀系统架构设计
查看>>
JAVA与Tomcat(续一)
查看>>
grub.conf配置失效时改如何处理
查看>>
[精讲8] windows server 2012 Cluster功能
查看>>
linux运维实用的42个常用命令总结
查看>>
MySQL分库分表python实现分库(7th)
查看>>
OSPF虚链路virtual-link
查看>>
使用WM_QUIT终止线程
查看>>
String字符串的常用方法
查看>>
文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr/chattr
查看>>