每日一算法:最大公因数、最小公倍数、因式分解
【摘要】 #include <stdio.h> int main(){ int m,n,r; int s; printf("请输入两个正整数:"); scanf("%d %d",&m,&n); s = m * n; do {//辗转相除法 r = m % n; m = n; n = r; }while (n != 0); printf("GCM:%d...
-
#include <stdio.h>
-
-
int main()
-
{
-
int m,n,r;
-
int s;
-
printf("请输入两个正整数:");
-
scanf("%d %d",&m,&n);
-
s = m * n;
-
do
-
{//辗转相除法
-
r = m % n;
-
m = n;
-
n = r;
-
}while (n != 0);
-
-
printf("GCM:%d\n",m);
-
printf("LCM:%d\n",s/m);
-
return 0;
-
}
因式分解 (不使用质数表)
-
#include <stdio.h>
-
-
int main()
-
{
-
int i,n;
-
printf("请输入一个整数:");
-
scanf("%d",&n);
-
printf("%d = ",n);
-
for (i=2; i<=n;)
-
{
-
if (n % i == 0)
-
{
-
printf("%d * ",i);
-
n = n/i;
-
}
-
else
-
{
-
i++;
-
}
-
}
-
printf("%d\n",n);
-
return 0;
-
}
-
#include <stdio.h>
-
-
#define N 1000
-
-
void prime(int *);
-
void factor(int*, int);
-
-
int main()
-
{
-
int temp;
-
int ptable[N+1] = {0};
-
prime(ptable);
-
printf("请输入一个整数:");
-
scanf("%d",&temp);
-
printf("%d = ",temp);
-
factor(ptable, temp);
-
return 0;
-
}
-
-
void prime(int *pNum)
-
{
-
int i,j;
-
int Prime[N+1];
-
for (i=2; i<N; i++)
-
{
-
Prime[i] = 1;
-
}
-
-
for (i=2; i*i<=N; i++)
-
{
-
if (Prime[i] == 1)
-
{
-
for (j=2*i; j<=N; j+=i)
-
{
-
if (j % i == 0)
-
{
-
Prime[j] = 0;
-
}
-
}
-
}
-
}
-
-
for (i=2,j=0; i<N; i++)
-
{
-
if (Prime[i] == 1)
-
{
-
pNum[j] = i;
-
j++;
-
}
-
}
-
}
-
-
void factor(int* table, int num)
-
{
-
int i;
-
for(i = 0; table[i] * table[i] <= num;)
-
{
-
if(num % table[i] == 0)
-
{
-
printf("%d * ", table[i]);
-
num /= table[i];
-
}
-
else
-
i++;
-
}
-
printf("%d\n", num);
-
}
文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq523176585/article/details/14187953
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)