⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 题目66.txt

📁 c语言小程序100个
💻 TXT
字号:
    题目66:下列程序的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out11.dat中。
    注意:部分源程序已给出。
    请勿改动主函数main()和输出数据函数writedat()的内容。    
--------------------------
void countValue() /*标准答案,有问题*/
{int I,j,half,yy[100];
 for(I=500;I<=800;I++)
 {half=I/2;
  for(j=2;j<half;j++)
  if (I%j==0) break;
  if (j>=half) {yy[cnt]=I;cnt++;}
  }
for (I=0,j=-1;I<cnt;I++)
 {j=j*-1;  sum+=j*yy[I];} /*此处有误!!!应为:{sum+=j*yy[I];j=j*-1; }*/
}
或者:
本题要求从大到小的顺序进行加减运算,因此这里采用从800开始循环到500这样就能保证出来的素数就是从大到小,内嵌的for()再加上if()是用来判断是否为素数。其中k用来控制加减运算。
void countValue()
{int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
{cnt++;sum+=k*i;k=-1*k;}
}
}

int ss(int m)
{ int i,k=1;
 for(i=2;i<m/2;i++)
 if(m%i==0) k=0;
 return k;     }
void countvalue()
{ int i,j=0,a[300],k=1;
 cnt=0;
 sum=0;
 for(i=800;i>500;i--)
 if(ss(i))
 { cnt++;
   a[j++]=i;  }
 for(i=0;i<cnt;i++)
 { sum+=k*a[i];
   k=-k;         }}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -