反素数 10C

Problem Description
反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。

Input
第一行输入n,接下来n行测试数据
输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].

Output
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.

Sample Input
3
2 3
1 10
47 359

Sample Output
2
6
240

1个回答

void myread(char filename[]);
int process(int a,int b);
int eval(int);

int _tmain(int argc, _TCHAR* argv[])
{
char filename[]="test.txt";
myread(filename);

getchar();
return 0;

}

void myread(char filename[ ]){
FILE* file;
char line[1024];
char data[1024];

int numline;
int i;
char *ptr;
int a[20];
int idx;
int j;
int val;

if((file=fopen(filename,"r"))!=NULL){
    printf("ok");
    fgets(line,1024,file);
    numline = atoi(line);
    printf("%d\n",numline);
    for(i=1;i<=numline;i++){
        fgets(data,1024,file);
        ptr = strtok(data," ");
        idx=0;
        while(ptr!=NULL){
            // printf("%8s,idx: %4d\n",ptr,idx);
            a[idx++]=atoi(ptr);

            ptr = strtok(NULL," ");
        }
        printf("idx: %d\n",idx);

        for (j=0;j<idx;j++){
            printf("array %d\n",a[j]);
        }
        val = process(a[0],a[1]);
        printf("result %d\n",val);
    }
    fclose(file);
}
//  fclose(file);

}

int process(int a,int b){
//int* p=(int*)malloc(sizeof(int)*(b-a+1));
int k;
int c;
int num=0;
int val=a;

for(k=a;k<=b;k++){
    c = eval(k);
    if(c>num){
        val = k;
        num = c;
    }
}
return val;

}

int eval(int n){
int i;
int c=0;
for(i=1;i<=n;i++){
if (n %i==0)
c++;
}
return c;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!