[ACM Steps] 2.1.4 最大素数因子的位置
2014-10-31 00:52
274 查看
给出一个数,求其最大素数因子在素数列表中的位置。
先打表
构建一个大数组,全部赋初值0。
下标从第一个素数2的开始,判断值是否为0,
若是,表示当前下标对应值是一个新的素数,并且是当前最大的素数。
对于其倍数值,更新为当前值,即当前最大的素数因子。
-----------------------------------------------------------
内存分配问题:
全局区:用于存放全局变量和静态变量。
堆(heap):程序员申请并指定大小,new、malloc。
栈(stack):编译器自动分配释放,存放局部变量。申请空间大于剩余空间时,溢出报错!
-------------------------------------------------------------
先打表
构建一个大数组,全部赋初值0。
下标从第一个素数2的开始,判断值是否为0,
若是,表示当前下标对应值是一个新的素数,并且是当前最大的素数。
对于其倍数值,更新为当前值,即当前最大的素数因子。
-----------------------------------------------------------
内存分配问题:
全局区:用于存放全局变量和静态变量。
堆(heap):程序员申请并指定大小,new、malloc。
栈(stack):编译器自动分配释放,存放局部变量。申请空间大于剩余空间时,溢出报错!
-------------------------------------------------------------
#include <stdio.h> #include <string.h> const int N = 1000001; //全局区 int prime ; int main() { int pos = 0;<span style="white-space:pre"> </span>//栈 memset(prime,0,sizeof(prime)); prime[1] = 0; for(int i = 2;i < N;i++) { if(prime[i] == 0) //一个新的素数因子 { pos++; prime[i] = pos; for(int j = i;j < N;j =j+i) //更新因子的倍数值的位置 { prime[j] = pos; } } } int num; while(scanf("%d",&num) != EOF) { printf("%d\n", prime[num]); } return 0; }
相关文章推荐
- hdu2136最大质因子在素数表中的位置
- hdu 2136Largest prime factor n的最大因子是第几个素数
- 【POJ 2886】 Who Gets the Most Candies?(反素数求最大因子数+线段树)
- 筛选法求素数表,并标记素数位置和合数最大质数位置 HOJ 2136
- hdu 2136(最大素数因子)
- POJ-3048 求有最大的素数因子的数
- ny520 最大素因子 筛选法求素数
- PE3 Largest prime factor(最大素数因子)
- nyoj520最大素因子(素数筛选法)
- HDU 5108 最大素数因子
- Largest prime factor(最大素数因子)
- boj 1339 简单题 用递归找到最大素数因子即可
- hdu 2710 最大的素数因子
- nyoj 最大素因子 520 (反着素数打表)
- 【ZOJ 1562和 BZOJ 1053】【反素数】【求n以内的因子最多的那个数(即不超过n的最大反素数)】
- iOS 算法面试题(打印2-100之间的素数、求两个整数的最大公约数、查找字符串的位置)~demo
- 最大因子(素数)模板
- hdu2710(找出这个数的最大素数因子,并输出这个数)
- 求数n的最大素因子是第几个素数
- hdoj2136 求数的最大素数因子