因子和阶乘
来源:互联网 发布:淘宝延长收获规则 编辑:程序博客网 时间:2024/05/19 13:30
把阶乘n!=1*2*3*4......*n 分解
例如 825=3*5*5*11,应表示为(0,1,2,0,1);
#include <stdio.h>#include <string.h>//素数判定。注意:n不能太大int is_prime(int n) { for(int i = 2; i*i <= n; i++) if(n % i == 0) return 0; return 1;}//素数表int prime[100], count = 0;int main() { //n和各个素数的指数 int n, p[100]; //构造素数表 for(int i = 2; i <= 100; i++) if(is_prime(i)) prime[count++] = i; while(scanf("%d", &n) == 1) { printf("%d! =", n); memset(p, 0, sizeof(p)); int maxp = 0; for(int i = 1; i <= n; i++) { //必须把i复制到变量m中,而不要在做除法时直接修改它 int m = i; for(int j = 0; j < count; j++) while(m % prime[j] == 0) { //反复除以prime[j],并累加p[j] m /= prime[j]; p[j]++; if(j > maxp) maxp = j; //更新最大素因子下标 } } //只循环到最大下标 for(int i = 0; i <= maxp; i++) printf(" %d", p[i]); printf("\n"); } return 0;}
自己写的代码有点错误
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int is_prime(int n){ for (int i=2;i*i<=n;i++) { if (n%i==0) return 0; } return 1;}int main(){ int p[100]; int n; int prime[100],count=0; for (int i=2;i<=100;i++) { if (is_prime(i)) prime[count++]=i; } while (scanf("%d",&n)==1) { int maxp=0; cout<<n<<"! ="; memset(p,0,sizeof(p)); for (int j=0;j<=count;j++) { while (n%prime[j]==0) { p[j]++; n/=prime[j]; if(j>maxp) maxp=j; } } for (int i=0;i<=maxp;i++) { printf(" %d",p[i]); } printf("\n"); } return 0;}
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 白皮书&&因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- 因子和阶乘
- CentOS 配置防火墙操作实例(启、停、开、闭端口)
- 体验产品模块
- 06-php中的魔术常量
- HDU1301 Jungle Roads 解题报告--prim
- JuliaSet&MandelBulb @ Maya&KK —— 4亿粒子的测试
- 因子和阶乘
- lwip记录1--内存池
- C语言有名管道fifo的创建及运用
- HDU1301 Outlets 解题报告--prim
- URAL - 1117 Hierarchy(找规律)
- Ubuntu下CodeBlocks更改调试终端
- 生成树的经典题--根据网上资料整理
- 由于“Table(bt_Employee)”没有主键,因此无法在其上执行 Create、Update 或 Delete 操作。
- 基于Annotation的Spring AOP: @After