蓝桥杯 - 因子和阶乘 C语言实现
2017-03-29 16:19
239 查看
因子和阶乘
题目:
输入正整数n(2=<n<=100),把阶乘n!=1*2*3*4*5*6*7*....*n 分解成素因子相乘的形式,从小大大输出各个素数(2,3,5,7.....)的指数,如825=3*5^2*11应表示成(0,1,2,0,1),表示分别有0,1,2,0,1,个2、3、5、7、11.你的程序应忽略比最大素因子更大的素数
样例输入:
5
53
样列输出:
5!=3 1 1
53!=49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
分析:
先获取100内的质数存储到prime[ ],对1*2*3*...n这1,2,3...n个数进行计算质数的倍数存储到p[ ]中同时记录最大的p[ i ]中的i值后面输出。
代码在此:
题目:
输入正整数n(2=<n<=100),把阶乘n!=1*2*3*4*5*6*7*....*n 分解成素因子相乘的形式,从小大大输出各个素数(2,3,5,7.....)的指数,如825=3*5^2*11应表示成(0,1,2,0,1),表示分别有0,1,2,0,1,个2、3、5、7、11.你的程序应忽略比最大素因子更大的素数
样例输入:
5
53
样列输出:
5!=3 1 1
53!=49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
分析:
先获取100内的质数存储到prime[ ],对1*2*3*...n这1,2,3...n个数进行计算质数的倍数存储到p[ ]中同时记录最大的p[ i ]中的i值后面输出。
代码在此:
#include<stdio.h> #include<string.h> int is_prime (int n) { int i; for(i = 2; i * i <= n; i ++){ if(n % i == 0) return 0; } return 1; } int prime[100]; int count = 0; int main () { int i, j; int n; int p[100]; for(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(i = 1; i <= n; i ++){ int m = i; for(j = 0; j < count; j ++){ while(m % prime[j] == 0){ m /= prime[j]; p[j] ++; if(j > maxp) maxp = j; } } } for(i = 0; i <= maxp; i ++) printf(" %d", p[i]); printf("\n"); } return 0; }
相关文章推荐
- C语言实现大数阶乘
- c语言用递归的方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
- 蓝桥杯 - 算法训练 最短路 Bellman-Ford算法 C语言实现
- 蓝桥杯 - 算法训练 连续正整数的和 C语言实现
- 蓝桥杯 - 算法训练 寂寞的数 C语言实现
- C语言实现阶乘累加(1!+2!+3!+....+n!=?)
- 蓝桥杯 - 算法训练 明明的随机数 C语言实现
- c语言实现n的阶乘
- 我用C语言实现“ 输入一个整数n,并求该整数n的阶乘”
- 蓝桥杯 - 算法训练 黑白无常 C语言实现
- 大数运算之100的阶乘(C语言实现)
- c语言方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
- 大数据阶乘C语言实现
- c语言递归实现100的阶乘
- 阶乘、斐波那契、 1的个数统计 c语言 实现备忘
- C语言实现求大数阶乘
- C语言 实现N阶乘的程序代码
- 大数运算_求1000的阶乘(C语言实现)
- 蓝桥杯 - 算法训练 王、后传说 C语言实现
- 蓝桥杯 - 算法训练 暗恋 C语言实现