作业帮 > 综合 > 作业

求N个数的最小公倍数我是这样想的:以6 3 9为例,将它们放在二维数组中每行的首地址,然后让其中最小的数安如下规律扩大,

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/28 03:30:57
求N个数的最小公倍数
我是这样想的:以6 3 9为例,将它们放在二维数组中每行的首地址,然后让其中最小的数安如下规律扩大,请竖着看.
6 不变 12 不变 18 不变
3 6 9 12 15 18
9 不变 不变 18 不变 不变
也就是说让最小的数加上它的初值,这样求最小公倍数是就不用求最大公约数了,我编的程序如下,但是却陷入死循环,有看到的朋友请解释一下.
main()
{
int N,i,j,k,m=0,n=0,c=0,min;
long a[10][10];
for(N=0;;N++) /输入数据/
{
scanf("%ld",a[N][0]); /存入首地址/
if(a[N][0]==0) /以0结束输入/
break;
}
min=a[0][0];
for(j=0;;j++)
{
for(i=0;ia[i][j])
{
min=a[i][j];
m=i; /标记最小值坐标/
n=j;
}
for(k=0;k
求N个数的最小公倍数我是这样想的:以6 3 9为例,将它们放在二维数组中每行的首地址,然后让其中最小的数安如下规律扩大,
你这程序最大问题貌似是这样的:
当前最小数是不唯一的,而你的保存下标只能保存一组下标.
再说个大问题,数组个数问题,开N,N的数组显然不够,比如说2和10001最小公倍数是20002,这个2要加10001次,这数组就上万了,再多加两个数3和5,这四个数的最小公倍数就是300030了,这个2就要加150015次了,这数组就得开15万,再加几个数呢……太恐怖了.
当然这可以用链表解决,但是时间效率上就成问题了……
其实你想过没,中间结果是没有必要保存,只与最近一次结果,因此数组实际有用的只有两位,第一位保存原数,第二位保存加到当前的结果,
按以上思路大概写了段程序如下:
经测试应该是没什么问题的,只要你的输入数据保证最小公倍数在long的范围之内.
#include
#define N 10//允许输入数据的最大个数
void main()
{
bool flag;//标记算法是否已经结束
int total,i,min;//分别为输入数据的个数,循环变量,当前最小值
long a[N][2];

total=0;
do
{
scanf("%ld",&a[total][0]);
a[total][1]=a[total][0];
total++;
}while(a[total-1][0]!=0&&total
求N个数的最小公倍数我是这样想的:以6 3 9为例,将它们放在二维数组中每行的首地址,然后让其中最小的数安如下规律扩大, 输入n(n≤20)个数放在一维数组中,找出其中最小的数,将他与数组最前面的元素交换后输出这些数. 编写c语言二维数组一、任意输入15个整数到二维数组中,将它们输出显示成一个5行3列的数阵.二、任意输入9个整数到二维数组 首先输入一个大于2且小于10的整数n,然后定义一个二维整形数组(n*n),初始化该数组,将数组中最大元素所在的行和最小元 求元素个数为10的一维数组元素中最大值和最小值编写函数输入两个正整数m,n,求它们最大公约数和最小公倍数 打印 n 阶杨辉三角形. 提示:先找规律将数据放在二维数组的下三角中,再打印. 1 1 1 1 2 1 1 3 3 1 将自然数按如下规律排列,然后用十字架框住其中五个数,图中为其中一种情形,问当框主的五个数的和为265时,最小的那个数是多 在n个数中,若其中最大的数与它们的平均数相等,这n个数的标准差为( ) 从键盘任意输入10个整数,将其中最大数与最小数的位置对换,然后输出对换后的10个数.[提示:用一维数组 编写一个C程序,输入8个整数放入一维数组w中,找出其中的最小数和 最大数,并将它们分别与数组 在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一程序,求出它们的平均数,放在AX寄存器中,并求出数组 在java中若二维数组a有n列,那么a[i][j]前的元素个数为?怎么用i,j,n算出结果