清编写函数countValue(),其功能是:选出100~1000间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如191)。计算并输出上述这些素数的个数count,以及这些素数值的和sum。函数WriteData()负责把结果输出到OU

admin2013-12-17  29

问题 清编写函数countValue(),其功能是:选出100~1000间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如191)。计算并输出上述这些素数的个数count,以及这些素数值的和sum。函数WriteData()负责把结果输出到OUT.DAT文件中。
    注意:部分源程序已给出。
    请勿改动主函数main()和写函数WriteData()的内容。
    试题程序:
    #include
    int count,sum;
    void WriteData();
    void countValue()
    {
    }
    void main()
    {
    count=sum=0;
    countValue();
    printf(“count=%d.sum=%d\n”,count,sum);
    WriteData();
    }
    void WriteData()
    {
    FILE*fp;
    fp=fopen(“OUT.DAT”。“W”);
    fprintf(fp,“%d\n%d\n”.count,sum);
    fclose(fp);
    }

选项

答案void countValue() { int i,j,d[3],flag; for(i一100;i<1000;i++) { flag=0; for(j=2;j<;j++)//判断是否为素数 if(i%j==0) { flag=l;/*如果当前数据可被除1和其 自身之外的整数整除的话,则将标志置1,表 明该数不是素数*/ break; //一旦发现不是素数,就退出循环 } if(flag==0)//如果是素数 { d[2]=i%10;//求出个位数 d[1]=(i/10)%10;//求出十位数 d[o]一(i/lOO)%10;//求出百位数 if((d[1]+d[2])%10==d[0]) //如果符合条件 { sum+=i;//计算总和 count++;//计数器加1 } } } }

解析 本题主要考查素数的判断及数位分解问题。
    ①判断是否为素数;素数的定义是:若一个数除了其自身和1再没有其他的除数,则该数就是素救。故用其定义可以很容易判断。在2到所判断数之间的数进行扫描。若有一个除数。则该数就不是素数。⑦数位分解;将n位数上各个位上的数值单独分离出来。解决此问题的方法是:将n位数时10求余可以将个位上的数值分离出来。将这个n位数除以10以后得到一个n-1位数。则此时n位数原来的10位就变成了n-1位数的个位,再将此n-1位数对10求余便可得到原n位数的十位。依此类推,按照同样的方法便可将n位数各个位上的数值分离出来。
转载请注明原文地址:https://kaotiyun.com/show/cAZZ777K
0

最新回复(0)