A. 如何用计算机c语言编程:输入两个正整数,输出它们的最小公约数和最大公约数
#include
int
min(int
a,int
b)
{
return
a>b?b:a;
}
void
main()
{
int
i;
int
m,n;
printf("输入两个正整数:");
//输入
scanf("%d",&m);
scanf("%d",&n);
//求最小并输出
for(i=2;i<=min(m,n);i++)
if((m%i==0)&&(n%i==0))
{
printf("最小公约数:%d\n",i);
break;
}
//求最大并输出
for(i=min(m,n);i>=2;i--)
if((m%i==0)&&(n%i==0))
{
printf("最大公约数:%d\n",i);
break;
}
}
B. 用C语言编写 从键盘输入一个整数x,输出它所有的约数。(即能被它整除。例如:6的约数为 1,2,3
#include <stdio.h>
int main()
{
int x,i;
scanf("%d",&x);
for(i=1;i<x;++i)
if(x%i==0)
printf("%d ",i);
return 0;
}
C. c语言输出一个数的所有因数
从数学定义可以得知,一个数的因数范围在1到该数本身。所以只需要从1到该数遍历,逐个尝试模除,可以整除的则为因数,将所有符合条件的数打印即可。
代码如下:
#include<stdio.h>
intmain()
{
intn,i;
scanf("%d",&n);//输入要输出因数的值。
for(i=1;i<=n;i++)
{
if(n%i==0)printf("%d,",i);//输出因数。
}
return0;
}
D. 如何用C语言求一个整数的所有约数之和
思路:
用a除从1到a/2
判断结果,是约数赋值给数组a[0]
...
...
再求数组a[n]的和
E. C语言有么高效求一个数的所有约数哦
用素数表,求很大的数的约数效率提高很多
#define MAX 10000
int a[MAX]={2,3,5,7,11,13,...};/*前一万个素数*/
F. C语言:输入一个整数,怎么输出这个数的所有约数
scanf("%d",&x);
for(int i=1;i<=x;i++)
if(x%i==0)printf("%d ",i);
G. C语言 快速求一个自然数的约数的个数
对于这个问题我们只需要暴力从2到根号n这个闭区间的所有整数就行了,如果能整除计数就加2,不过如果这个整数的平方就是输入的n则计数只能加1。最后不要忘记1和其自身。如果根号n不是一个整数,那么我们可以向下取整。算法的整体复杂度是根号n,这个算法的时间消耗与根号n成正比,不过可以确定的是n在32位的整型(或者无符号的整型)数据范围内时间消耗还是比较乐观的。参考代码(C语言实现):
#include
<stdio.h>
#include
<math.h>
int
main(void)
{
int
i;
int
n;
int
m;
int
num;
scanf("%d",
&n);
num
=
0;
m
=
sqrt(n);
for
(i=2;
i<=m;
++i)
{
if
(n
%
i
==
0)
{
num
+=
2;
if
(i
*
i
==
n)
{
--num;
}
}
}
/*自然数1应该只有一个因子才对*/
if
(n
!=
1)
{
num
+=
2;
}
else
{
++num;
}
printf("%d\n",
num);
return
0;
}
H. C语言编程: 输入一个正整数求它的全部约数,并输出。运行结果停留在屏幕上。
#include<stdio.h>void main()
{
int n,i;
printf("输入一个正整数:");
scanf("%d",&n);
printf("约数:\n");
for(i=1;i<=n;i++)
if(n%i==0) printf("%d\n",i);}