PAT 1007 素数对猜想

c++ vector数组的使用 https://www.cnblogs.com/yskn/p/9053161.html(转)

 

 

素数判断方法:

1、:#判断从2到number-1的每一个数是否可以被number整除

2、#最小的除数是2,不可能有大于 number/2 的约数的,顺便取整

3、#从约数都是两两一对的,只需要尝试当中一半即可;最合理的是尝试小于其平方根的每个值,即从2到sqrt(number)

4、  如果一个数 C 能被 (a*b) 整除,显然, C%a 或者 C%b 余数都是零,也就是说一个数肯定能被它的约数的约数整除

       因此,一切合数作为除数都是重复劳动,综上,只需要判断一个数能否被小于它的平方根的素数整除,故建立素数的数组

     

#include<iostream>
#include<string>
#include<vector>
#include<math.h>
using namespace std;
int main(){
    int num;
    cin>>num;
    vector<int> primes;  //储存素数的容器
    primes.push_back(2);
    bool isPrime;
    for(int i=3;i<=num;i++){
        isPrime=true;
        for(int j=0;j<primes.size()&&primes[j]<=sqrt(i);j++){
            if(i%primes[j]==0){
                isPrime=false;
                break;
            }
            //可以被质数整除,则说明为合数
        }
        if(isPrime){
            primes.push_back(i);
        }
    }
    int sum_double=0;
    for(int j=1;j<primes.size();j++){
        if(primes[j]-primes[j-1]==2)
            sum_double++;
    }
    cout<<sum_double;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值