3565 - 3.cpp
时间限制 : 1 秒
内存限制 : 128 MB
求100(不包括100)到n之间的所有素数(包括n)正负相间的和,n(n为整型数据)通过键盘输入,如当n=200时,101-103+107-109+…199.要求通过int prime(int num)判断素数。
题目输入
输入1个整型数据(多组输入数据)
题目输出
输出计算的值(多组输出数据)
输入/输出样例
输入格式
200 300
输出格式
135 187
C语言解答
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> int prime(int num) { int j; for(j=2;j<=sqrt(num);j++) { if((num%j)==0) break; } if(j<=sqrt(num)) return 1;//不是素数 else return -1;//是素数 } int main() { // freopen("in","r",stdin); // freopen("out","w",stdout); int n; int i; while(scanf("%d",&n)!=EOF) { int flag=1; int sum=0; for(i=101;i<=n;i++) { if(prime(i)==-1) { sum += (i*flag); flag *= -1; } } printf("%d\n",sum); } return 0; }
C++解答
#include<stdio.h> #include<math.h> int prime(int num) { int s,i,j,m; for(s=0,i=101;i<=num;i++) for(m=0,j=2;j<=sqrt(i);j++) { if(i%j!=0) { m++; } else break; } if(m+2>sqrt(i)) return num; else return 0; } main() { int s,n,i,k; while(scanf("%d",&n)!=EOF) { for(s=0,k=1,i=101;i<=n;i++) { if(prime(i)) { s+=k*i; k=-k; } } printf("%d\n",s); } return 0; }