一个数的所有因子(求更简单的算法)

aryou 2003-08-05 10:25:55
下面是我做的程序,,,

要求不用指针、数组。。有没有更简单的算法???


#include "stdio.h"
void main()
{
int n;
void aver(int num);
printf("Please into your Number:");
scanf("%d",&n);
printf("\n");
aver(n);
printf("\n");
}
void aver(int num)
{
int j=2,a;
while (j<=num)
{
if(num%j!=0)
j++;
else
{
a=num/j;
num=a;
printf("%d",j);
if (num!=1)
printf("*");
j=2;
}

}
}
...全文
1006 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chon81 2003-08-05
  • 打赏
  • 举报
回复
呵呵,再改一处

#include "stdio.h"
#include "conio.h"
void main()
{
int n;
void aver(int num);
printf("Please into your Number:");
scanf("%d",&n);
printf("\n");
aver(n);
printf("\n");
getch();
}
void aver(int num)
{
int j=2; //a不要 了.
while (j<=num)
{
if(num%j!=0)
j+=(j==2?1:2);//2后面的因数都是奇数.但我不知道这个会不会更快啊.
else
{
//a=num/j;
//num=a;
num/=a;
printf("%d",j);
if (num!=1)
printf("*");
//j=2; //这个没有必要.
}

}
}

chinajiji 2003-08-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>

int main()
{
int n = 0;
void aver(int num);
printf("Please into your Number:");
scanf("%d",&n);
if(n <= 0) {
printf("Oops! you must input a postive integer number!");
system("pause");
exit(-1);
}
printf("\n");
aver(n);
system("pause");
}
void aver(int num)
{
int j;
for(j = 2; j <= sqrt(num);)
{
if(num % j == 0)
{
num = num / j;
printf("%d * ",j);
// j = 2; 这一句不要!
}
else
j++;
}
printf("%d", num);
}
aryou 2003-08-05
  • 打赏
  • 举报
回复
倒,俺想混几个朋友的QQ,发了两道题,用了80分,还是一个没混上:(((

iceheart 2003-08-05
  • 打赏
  • 举报
回复
改点:while (j<=sqrt(num))
aryou 2003-08-05
  • 打赏
  • 举报
回复
to MaiCle()【三星S308】()

也谢你了,,,能不能也加你QQ???
aryou 2003-08-05
  • 打赏
  • 举报
回复
哈,谢了,,,

能不能加你QQ???

俺的是:23003398
wandengfeng 2003-08-05
  • 打赏
  • 举报
回复
up
MaiCle 2003-08-05
  • 打赏
  • 举报
回复
void aver(int num)
{
for ( int i = 2; i < num; i++)
{
if ( num % i == 0 )
{
printf("%d", i);
num = num / i;
}
}
}
chon81 2003-08-05
  • 打赏
  • 举报
回复
我觉你的很不错啊,我就按你的这个改了点.
#include "stdio.h"
#include "conio.h"
void main()
{
int n;
void aver(int num);
printf("Please into your Number:");
scanf("%d",&n);
printf("\n");
aver(n);
printf("\n");
getch();
}
void aver(int num)
{
int j=2,a;
while (j<=num)
{
if(num%j!=0)
j+=(j==2?1:2);//2后面的因数都是奇数.但我不知道这个会不会更快啊.
else
{
a=num/j;
num=a;
printf("%d",j);
if (num!=1)
printf("*");
//j=2; //这个没有必要.
}

}
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧