【算法】任意区间寻找约数最大的数

来源:互联网 发布:java内存溢出原因 编辑:程序博客网 时间:2024/06/05 02:15
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>static int a=0,b=0;static int x;static int max=0;int m,i,j;//生成a,bvoid r(){FILE *fp;system("CLS");printf("\n");a=rand()%10000+1;b=rand()%10000+1;while(a>b){a=rand()%10000+1;   b=rand()%10000+1;}fp=fopen("input.txt","w");fprintf(fp,"%d ",a);    fprintf(fp,"%d",b);fclose(fp);printf("a=%d,b=%d\n",a,b);printf("a,b已写入input.txt\n\n");max=0;}//找约数最大的数void c(){FILE *fp;fp=fopen("output.txt","w");system("CLS");if(a==0){printf("请先选择 1 生成区间[a,b]\n\n");return;}for(i=a;i<=b;i++){m=0;for(j=1;j<=i;j++){if(i%j==0){m++;}}if(max<m){max=m;x=i;}}printf("约数最多的数是:%d\n",x);fprintf(fp,"约数最多的数是:%d\n",x);for(j=1;j<=x;j++){if(x%j==0){printf("约数:%d\n",j);fprintf(fp,"约数:%d\n",j);}}printf("一共有%d个\n\n",max);fprintf(fp,"一共有%d个\n\n",max);fclose(fp);printf("已写入output.txt\n\n");}void main(){char flag;srand((int)time(NULL));while(1){//system("CLS");printf("1、随机生成区间[a,b]\n");printf("2、找[a,b]内约数最多的数\n");printf("3、退出本程序\n");printf("-------------------------------\n");printf("请选择:");scanf("%c",&flag);getchar();switch(flag){case '1':r();break;case '2':c();break;case '3':return;default:system("CLS");printf("\n输入有误,重新输入!\n\n");break;}}}

0 0