题目描述
Description
用户输入一个数,然后输出从1开始一直到这个数为止(包括这个数)中所有的合数的和。
数据范围及提示
Data Size & Hint
先找出素数,然后把不是素数的和相加。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 10010
int prime[N];
bool check[N];
int main()
{
memset(check,0,sizeof check);
int tot=0;
int n,sum=0;
scanf("%d",&n);
for(int i=2;i<=n;i++){
if(!check[i])
prime[tot++]=i;
for(int j=0;j<tot;j++){
if(i*prime[j]>n) break;
check[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
for(int i=2;i<=n;i++)
if(check[i]) sum+=i;
printf("%d\n",sum);
return 0;
}
转载于:https://www.cnblogs.com/shenben/p/5516769.html