#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;
}