Đề yêu cầu tìm ucln của một dãy số dương. Em làm như vậy
...không biết bị sao mà khi n>4 nó không cho ra kết quả!!!?. Mọi người giúp em!!
Code:
#include "stdafx.h" #include <conio.h> #include <stdio.h> void nhap(int a[],int n); void xuat(int a[],int n); int ucln(int a,int b); void ucd(int a[],int &n); void main() { int a[10],n,i,j,uc; printf("nhap n:"); scanf("%d",&n); printf("\nNHap mang duong\n"); nhap(a,n); /*uc = ucln(a[0],a[1]); for (i = 2; i < n; i++) if (uc == 1) break; else uc = ucln(uc,a[i]); printf("\nucln cua cac pt duong trong mang la %d",uc); */ ucd(a,n); printf("\nucln cua cac pt duong trong mang la "); xuat(a,n); getch(); } void nhap(int a[],int n) { int i; for (i=0;i<n;i++) { printf("\npt[%d]:",i); scanf("%d",&a[i]); } } void xuat(int a[],int n) { int i; for (i=0;i<n;i++) printf("%3d",a[i]); } int ucln(int a,int b) { do { if(a>b)a=a-b; else b=b-a; } while(a!=b); return a; } void ucd(int a[],int &n) { int i,j; do { for(i=0,j=-1;i<n-1;i+=2) { j++; a[j]=ucln(a[i],a[i+1]); } if((n%2)!=0) { a[j+1]=a[n-1]; n=(n+1)/2; } else n=n/2; } while(n!=1); }
Comment