调用函数rwdata(),从in.dat文件中读取10组数据(m和k),并嵌套调用primenum函数分别得出array[]数组。请编写primenum(int m,int k,int array[])。该函数的功能是;将紧靠m的k个素数存入数组array

admin2021-02-03  48

问题 调用函数rwdata(),从in.dat文件中读取10组数据(m和k),并嵌套调用primenum函数分别得出array[]数组。请编写primenum(int m,int k,int array[])。该函数的功能是;将紧靠m的k个素数存入数组array并在屏幕上显示。最后把结果输出到文件out.dat中。
    例如。若输入3 9则对应输出5 7 11 13 17 19 23 29 31。
    注意:部分程序已经给出.请勿改动主函数main()和输出数据函数rwdata()的内容。
    试题程序:
    #include
    #include
    void rwdata();
    void primenum(int m,int k,int array[])
    {
    }
    main()
    {
    int m。n,array[1000];
    printf(“\Please enter two integers:”);
    seanf(“%d%d”,&m,&n);
    primenum(m,n,array);
    for(m=0;m    printf(“%d”,array[m]);
    printf(“\n”);
    rwdata();
    }
    void rwdata()
    {
    int m,n,array[1000],i;
    FILE*readfile,*writefile;
    readfile=fopen(“in.dat”,“r”);
    writefile=fopen(“out.dat”,“W”);
    for(i=0Ii<10;i++)
    {
    fscanf(readfile,“%d%d”,&.m,&n);
    primenum(m,n,array);
    for(m=0;m    fprintf(writefiIe,“%d”,array[m]);
    fprintf(writefile,“\n”)1
    }
    fclose(readfile);
    felose(writefile);
    }
}

选项

答案void primenum(int m,int k,int array[]) { int value=m+l; int half,n=0,i; while(1) { half=value/2; for(i=2;i<=half;i++) if(value%i==0) break; if(i>half) { arrsu[n]=value; n++; } if(n>=k) hreak; value++; } }

解析 本题主要考查素数判断的问题,本程序的算法是:①先定义变量value.将m之后的数逐个赋值给该变量;②若此数不能被2~value/2整除,则为素敖,将值赋给arrayIn],然后n++。
转载请注明原文地址:https://kaotiyun.com/show/OLOZ777K
0

最新回复(0)