#include<stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,int n);
main()
{
int n;
int k=2;
struct line *root,*p;
scanf("%d",&n);
if(n<2||n>30000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
p->i=0;
p->pn=2;
while (k++<=n){
decompoFactor(p,k);
p=root;
}
p=root;
printf("%d ^ %d ",p->pn,p->i);
p=p->next;
while (p!=NULL){
printf("* %d ^ %d ",p->pn,p->i);
p=p->next;
}
}
void decompoFactor (struct line *p,int n){// 分解因数;
while (p!=NULL){
if((n%(p->pn))==0){
n=n/(p->pn);
(p->i)++;
}
p=p->next;
}
if(p==NULL){
p=(struct line*)malloc(sizeof(struct line));
p->i=1;
p->pn=n;
}
}
6 个解决方案
#1
上述题目是:
N!的分解
【问题描述】
将N!分解成素数幂的乘积。
【输入形式】
从标准输入读取一个整数N(1≤N≤30000)。
【输出形式】
结果打印到标准输出。
输出格式为:p1^k1*p2^k2…其中p1,p2…为质数且ki>1。当ki=1时只输出pi,ki=0的项不输出。分解式中的素数按从小到大输出。
【输入样例】
5
【输出样例】
2^3*3*5
N!的分解
【问题描述】
将N!分解成素数幂的乘积。
【输入形式】
从标准输入读取一个整数N(1≤N≤30000)。
【输出形式】
结果打印到标准输出。
输出格式为:p1^k1*p2^k2…其中p1,p2…为质数且ki>1。当ki=1时只输出pi,ki=0的项不输出。分解式中的素数按从小到大输出。
【输入样例】
5
【输出样例】
2^3*3*5
#2
mark
#3
win32下的内存分配
0xcdcdcdcd - Created but not initialised
0xfdfdfdfd - 分配的CD区域前后各有一个,标示边界
0xdddddddd - Deleted,CRT中称处于这种状态的内存区为 Dead Land。同时边界DWORD也同时被清除。
0xfeeefeee - Freed memory set by NT's heap manager
0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ
0xabababab - Memory following a block allocated by LocalAlloc()
0xBAADF00D - HeapAlloc分配的内存
0xcdcdcdcd - Created but not initialised
0xfdfdfdfd - 分配的CD区域前后各有一个,标示边界
0xdddddddd - Deleted,CRT中称处于这种状态的内存区为 Dead Land。同时边界DWORD也同时被清除。
0xfeeefeee - Freed memory set by NT's heap manager
0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ
0xabababab - Memory following a block allocated by LocalAlloc()
0xBAADF00D - HeapAlloc分配的内存
#4
急呀,高手们帮我看看
#5
p->next没有初始化,p=p->next后,p成为野指针。
修改后无运行错误:
修改后无运行错误:
#include <stdio.h>
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,int n);
main()
{
int n;
int k=2;
struct line *root,*p;
scanf("%d",&n);
if(n <2||n>30000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k++ <=n){
decompoFactor(p,k);
p=root;
}
p=root;
printf("%d ^ %d ",p->pn,p->i);
p=p->next;
while (p!=NULL){
printf("* %d ^ %d ",p->pn,p->i);
p=p->next;
}
}
void decompoFactor (struct line *p,int n){// 分解因数;
while (p!=NULL){
if((n%(p->pn))==0){
n=n/(p->pn);
(p->i)++;
}
p=p->next;
}
if(p==NULL){
p=(struct line*)malloc(sizeof(struct line));
p->i=1;
p->pn=n;
}
}
#6
#include <stdio.h>
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,struct line *q,int n);
int main()
{
int n;
int k=2;
struct line *root,*p,*q;
scanf("%d",&n);
if(n <2||n>5000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
q=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k<=n){
decompoFactor(p,q,k);
k++;
p=root;
}
p=root;
if(p->i>0)
printf("%d^%d",p->pn,p->i);
else
printf("%d",p->pn);
p=p->next;
while (p!=NULL){
printf("*%d^%d",p->pn,p->i);
p=p->next;
}
return 0;
}
void decompoFactor (struct line *p,struct line *q,int n){// 分解因数;
while (p!=NULL)
{
if((n%(p->pn))==0)
{
n=n/(p->pn);
(p->i)++;
}
if(n%(p->pn)!=0)
{
q=p;
p=p->next;
}
}
if(p==NULL&&n!=1){
p=(struct line*)malloc(sizeof(struct line));
q->next=p;
p->i=1;
p->pn=n;
p->next=NULL;
p=q;
}
}
这个就行了,绝对正确。。。
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,struct line *q,int n);
int main()
{
int n;
int k=2;
struct line *root,*p,*q;
scanf("%d",&n);
if(n <2||n>5000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
q=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k<=n){
decompoFactor(p,q,k);
k++;
p=root;
}
p=root;
if(p->i>0)
printf("%d^%d",p->pn,p->i);
else
printf("%d",p->pn);
p=p->next;
while (p!=NULL){
printf("*%d^%d",p->pn,p->i);
p=p->next;
}
return 0;
}
void decompoFactor (struct line *p,struct line *q,int n){// 分解因数;
while (p!=NULL)
{
if((n%(p->pn))==0)
{
n=n/(p->pn);
(p->i)++;
}
if(n%(p->pn)!=0)
{
q=p;
p=p->next;
}
}
if(p==NULL&&n!=1){
p=(struct line*)malloc(sizeof(struct line));
q->next=p;
p->i=1;
p->pn=n;
p->next=NULL;
p=q;
}
}
这个就行了,绝对正确。。。
#1
上述题目是:
N!的分解
【问题描述】
将N!分解成素数幂的乘积。
【输入形式】
从标准输入读取一个整数N(1≤N≤30000)。
【输出形式】
结果打印到标准输出。
输出格式为:p1^k1*p2^k2…其中p1,p2…为质数且ki>1。当ki=1时只输出pi,ki=0的项不输出。分解式中的素数按从小到大输出。
【输入样例】
5
【输出样例】
2^3*3*5
N!的分解
【问题描述】
将N!分解成素数幂的乘积。
【输入形式】
从标准输入读取一个整数N(1≤N≤30000)。
【输出形式】
结果打印到标准输出。
输出格式为:p1^k1*p2^k2…其中p1,p2…为质数且ki>1。当ki=1时只输出pi,ki=0的项不输出。分解式中的素数按从小到大输出。
【输入样例】
5
【输出样例】
2^3*3*5
#2
mark
#3
win32下的内存分配
0xcdcdcdcd - Created but not initialised
0xfdfdfdfd - 分配的CD区域前后各有一个,标示边界
0xdddddddd - Deleted,CRT中称处于这种状态的内存区为 Dead Land。同时边界DWORD也同时被清除。
0xfeeefeee - Freed memory set by NT's heap manager
0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ
0xabababab - Memory following a block allocated by LocalAlloc()
0xBAADF00D - HeapAlloc分配的内存
0xcdcdcdcd - Created but not initialised
0xfdfdfdfd - 分配的CD区域前后各有一个,标示边界
0xdddddddd - Deleted,CRT中称处于这种状态的内存区为 Dead Land。同时边界DWORD也同时被清除。
0xfeeefeee - Freed memory set by NT's heap manager
0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ
0xabababab - Memory following a block allocated by LocalAlloc()
0xBAADF00D - HeapAlloc分配的内存
#4
急呀,高手们帮我看看
#5
p->next没有初始化,p=p->next后,p成为野指针。
修改后无运行错误:
修改后无运行错误:
#include <stdio.h>
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,int n);
main()
{
int n;
int k=2;
struct line *root,*p;
scanf("%d",&n);
if(n <2||n>30000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k++ <=n){
decompoFactor(p,k);
p=root;
}
p=root;
printf("%d ^ %d ",p->pn,p->i);
p=p->next;
while (p!=NULL){
printf("* %d ^ %d ",p->pn,p->i);
p=p->next;
}
}
void decompoFactor (struct line *p,int n){// 分解因数;
while (p!=NULL){
if((n%(p->pn))==0){
n=n/(p->pn);
(p->i)++;
}
p=p->next;
}
if(p==NULL){
p=(struct line*)malloc(sizeof(struct line));
p->i=1;
p->pn=n;
}
}
#6
#include <stdio.h>
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,struct line *q,int n);
int main()
{
int n;
int k=2;
struct line *root,*p,*q;
scanf("%d",&n);
if(n <2||n>5000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
q=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k<=n){
decompoFactor(p,q,k);
k++;
p=root;
}
p=root;
if(p->i>0)
printf("%d^%d",p->pn,p->i);
else
printf("%d",p->pn);
p=p->next;
while (p!=NULL){
printf("*%d^%d",p->pn,p->i);
p=p->next;
}
return 0;
}
void decompoFactor (struct line *p,struct line *q,int n){// 分解因数;
while (p!=NULL)
{
if((n%(p->pn))==0)
{
n=n/(p->pn);
(p->i)++;
}
if(n%(p->pn)!=0)
{
q=p;
p=p->next;
}
}
if(p==NULL&&n!=1){
p=(struct line*)malloc(sizeof(struct line));
q->next=p;
p->i=1;
p->pn=n;
p->next=NULL;
p=q;
}
}
这个就行了,绝对正确。。。
#include <stdlib.h>
struct line{
int pn;
int i;
struct line * next;
};
void decompoFactor (struct line *p,struct line *q,int n);
int main()
{
int n;
int k=2;
struct line *root,*p,*q;
scanf("%d",&n);
if(n <2||n>5000){
printf(" error input");
return 0;
}
p=(struct line*)malloc(sizeof(struct line));
root=p;
q=p;
p->i=0;
p->pn=2;
p->next = NULL; //初始化p->next
while (k<=n){
decompoFactor(p,q,k);
k++;
p=root;
}
p=root;
if(p->i>0)
printf("%d^%d",p->pn,p->i);
else
printf("%d",p->pn);
p=p->next;
while (p!=NULL){
printf("*%d^%d",p->pn,p->i);
p=p->next;
}
return 0;
}
void decompoFactor (struct line *p,struct line *q,int n){// 分解因数;
while (p!=NULL)
{
if((n%(p->pn))==0)
{
n=n/(p->pn);
(p->i)++;
}
if(n%(p->pn)!=0)
{
q=p;
p=p->next;
}
}
if(p==NULL&&n!=1){
p=(struct line*)malloc(sizeof(struct line));
q->next=p;
p->i=1;
p->pn=n;
p->next=NULL;
p=q;
}
}
这个就行了,绝对正确。。。