1706 求合数和

Posted 神犇(shenben)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1706 求合数和相关的知识,希望对你有一定的参考价值。

1706 求合数和

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
题目描述 Description

用户输入一个数,然后输出从1开始一直到这个数为止(包括这个数)中所有的合数的和。

输入描述 Input Description

一个整数N,0<N<=1000

输出描述 Output Description

一行,一个整数,即从1到N中所有合数的和

样例输入 Sample Input

样例一:100

 

样例二:9

样例输出 Sample Output

样例一:3989

 

样例二:27

数据范围及提示 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;
}

 

以上是关于1706 求合数和的主要内容,如果未能解决你的问题,请参考以下文章

质数和合数那个多,为啥

pku1365 Prime Land (数论,合数分解模板)

M - Help Hanzo LightOJ - 1197 (大区间求素数)

约数之和

The Super Powers UVA - 11752(合数幂)

合数个数(java)