算法竞赛入门经典-第五章因子和阶乘
来源:互联网 发布:原子车车架数据 编辑:程序博客网 时间:2024/06/04 23:18
#include<stdio.h>
#include<string.h>
#include<string.h>
int is_prime(int n) {
for(int i = 2; i*i <= n; i++)
if(n % i == 0) return 0;
return 1;
}
for(int i = 2; i*i <= n; i++)
if(n % i == 0) return 0;
return 1;
}
int prime[100], count = 0;
int main() {
int n, p[100];
for(int i = 2; i <= 100; i++)
if(is_prime(i)) prime[count++] = i;
int main() {
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++) {
int m = i;
for(int j = 0; j < count; j++)
while(m % prime[j] == 0) {//拆分成素数形势start
//while判断:如果该素数使m的一个因子
m /= prime[j];//那么更新m成为乘式中非素数的因子
p[j]++;//j的幂次加1
if(j > maxp) maxp = j;//拆分成素数形式end
}
}
for(int i = 0; i <= maxp; i++)
printf(" %d", p[i]);
printf("\n");
}
return 0;
}
//分析思路
//1.将n!=1*2*3...*n每一个乘积项进行素数乘积的检验,看每一项能如何用素数因子表示
//2.将素数因子的幂次累加,就是总的幂
//3.输出.....
//自己为什么没想到这个办法呢?
//因为....感觉自己智商秀下限啊.....
//还是看的代码不够多经验不够丰富....
//还要想一下有没有其他的解决办法那???
//也可以这么做
//1.在1到n中,如果一个乘积项本身就是素数,那么这个素数幂次加1
//2.如果一个乘积项不是素数,那就拆分成素数形式-如何拆分??
//3.对拆分后的项进行统计,++
#include<stdio.h>
#include<string.h>
int is_prime(int n) {
for(int i = 2; i*i <= n; i++)
if(n % i == 0) return 0;
return 1;
}
printf("%d! =", n);
memset(p, 0, sizeof(p));
int maxp = 0;
for(int i = 1; i <= n; i++) {
int m = i;
for(int j = 0; j < count; j++)
while(m % prime[j] == 0) {//拆分成素数形势start
//while判断:如果该素数使m的一个因子
m /= prime[j];//那么更新m成为乘式中非素数的因子
p[j]++;//j的幂次加1
if(j > maxp) maxp = j;//拆分成素数形式end
}
}
for(int i = 0; i <= maxp; i++)
printf(" %d", p[i]);
printf("\n");
}
return 0;
}
//分析思路
//1.将n!=1*2*3...*n每一个乘积项进行素数乘积的检验,看每一项能如何用素数因子表示
//2.将素数因子的幂次累加,就是总的幂
//3.输出.....
//自己为什么没想到这个办法呢?
//因为....感觉自己智商秀下限啊.....
//还是看的代码不够多经验不够丰富....
//还要想一下有没有其他的解决办法那???
//也可以这么做
//1.在1到n中,如果一个乘积项本身就是素数,那么这个素数幂次加1
//2.如果一个乘积项不是素数,那就拆分成素数形式-如何拆分??
//3.对拆分后的项进行统计,++
#include<stdio.h>
#include<string.h>
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() {
int n, p[100];
for(int i = 2; i <= 100; i++)
if(is_prime(i)) prime[count++] = i;
int main() {
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++)
{
for(j=0;j<count;j++)
{
if(j==i)
{p[j]++;break}
while(m % prime[j] == 0)
{//拆分成素数形势start
//while判断:如果该素数使m的一个因子
m /= prime[j]; //那么更新m成为乘式中非素数的因子
p[j]++; //j的幂次加1
if(j > maxp) maxp = j;
}//拆分成素数形式end
}//判断是否在这个素数表里
}
for(int i = 0; i <= maxp; i++)
printf(" %d", p[i]);
printf("\n");
}
return 0;
}
printf("%d! =", n);
memset(p, 0, sizeof(p));
int maxp = 0;
for(int i = 1; i <= n; i++)
{
for(j=0;j<count;j++)
{
if(j==i)
{p[j]++;break}
while(m % prime[j] == 0)
{//拆分成素数形势start
//while判断:如果该素数使m的一个因子
m /= prime[j]; //那么更新m成为乘式中非素数的因子
p[j]++; //j的幂次加1
if(j > maxp) maxp = j;
}//拆分成素数形式end
}//判断是否在这个素数表里
}
for(int i = 0; i <= maxp; i++)
printf(" %d", p[i]);
printf("\n");
}
return 0;
}
0 0
- 算法竞赛入门经典 第五章 因子和阶乘
- 算法竞赛入门经典-第五章因子和阶乘
- 算法竞赛入门经典:第五章 基础题目选解 5.10 因子和阶乘
- 算法竞赛入门经典5.4.2因子和阶乘
- 算法竞赛经典入门-第五章阶乘的精确值
- 【py交易】算法竞赛入门经典5.4.2 因子和阶乘 Python
- 算法入门竞赛 5.4.2 因子和阶乘
- 算法竞赛入门——因子和阶乘
- 算法竞赛入门经典 第五章 字符串
- 算法竞赛入门经典 第五章 6174
- 算法竞赛入门经典-第五章源代码
- 算法竞赛入门经典第五章
- 算法竞赛入门经典第五章习题
- 算法竞赛入门经典第五章习题
- 《算法竞赛入门经典》 第五章 基础题目选解
- 算法竞赛入门经典 第五章 字母重排
- 算法竞赛入门经典(第一版) 第五章 解题报告
- 算法竞赛入门经典-第五章错位输出
- 【POJ2140】Herd Sums(数学)
- Comparable与Comparator的区别
- Linux常用命令
- 修改计算机名称后,如何修改服务器上TFS的映射工作区
- Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论
- 算法竞赛入门经典-第五章因子和阶乘
- 【CS231n winter2016 Lecture 6 (Training Neural Networks Part 3,update schemes/dropout and so on..)】
- 服务器TIME_WAIT
- nyoj10_skiing
- poll机制
- 【mybatis】IF判断的坑 (实现<if test=" status == 'zhangsan'">)
- ssm整合
- 写点什么
- 文件编程简述