1 条题解
-
0
C :
#include <stdio.h> #include <string.h> #define MAX 1000004 char isPrime[MAX]; int main(){ int total, n, i, j, N, sum; memset(isPrime, 1, MAX); isPrime[0] = 0; isPrime[1] = 0; for(i = 4; i < MAX; i+=2) isPrime[i] = 0; for(i = 3; i < MAX; i+=2){ if(!isPrime[i]) continue; for(j = i + i; j < MAX; j+=i){ isPrime[j] = 0; } } scanf("%d", &total); while(total--){ scanf("%d", &n); for(i = sum = 0; i < n; i++){ scanf("%d", &N); if(isPrime[N]) sum += N; } printf("%d\n", sum); } return 0; }
C++ :
#include <iostream> #include <cstdio> using namespace std; const int N=1000000; int i,j; int t,a,n,s; bool f[N+1]; void work() { for(i=3;i<=N;i++) { if(!f[i]) for(j=3*i;j<=N;j+=2*i) f[j]=1; } } int main() { work(); scanf("%d",&t); while(t--) { scanf("%d",&n); s=0; for(i=1;i<=n;i++) { scanf("%d",&a); if(a==1||(a>2&&a%2==0)) continue; if(!f[a]) s+=a; } printf("%d\n",s); } return 0; }
Java :
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int M=sc.nextInt(); for(int a=1;a<=M;a++) { int N=sc.nextInt(); int[] arr=new int[N]; int sums=0; for(int i=0;i<N;i++) { arr[i]=sc.nextInt(); } for(int i=0;i<N;i++) { int sum=isPrime(arr[i]); sums+=sum; } System.out.println(sums); } } public static int isPrime(int num)//判断是否为素数 { if(num>1) { for(int i=2;i<num;i++) { if(num%i==0) return 0; } } else return 0; return num; } }
- 1
信息
- ID
- 2010
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者