コード例 #1
0
ファイル: e50.c プロジェクト: drsam94/PELC
int main(int argc, char** argv) {
    int ans = 0;
    int chainLength = 1;
    //78498 = pi^-1(1000000)
    int* primes = (int*)malloc(78498 * sizeof(int));
    int i = 2;
    int c = 0;
    //make list of primes
    for (i = 0; i < 1000000; ++i) {
        if (isPrime(i)) {
            primes[c] = i;
            ++c;
        }
    }
    int j;
    for (i = 0; i < 78498; ++i) {
        for (j = i+chainLength; j < 78498; ++j) {
            int temp = partialSum(primes,i,j);
            if (temp > 1000000) {
                break;
            }
            if (isPrime(temp)) {
                ans = temp > ans ? temp : ans;
                chainLength = j - i;
            }
        }
    }
    printf("%d\n",ans);
    return 0;
} 
コード例 #2
0
 /**
  * @param nums: A list of integers
  * @return: A list of integers includes the index of the first number 
  *          and the index of the last number
  */
 vector<int> subarraySum(vector<int> nums){
     vector<int> result;
     if (nums.empty())  return result;
     vector<pair<int, int>> partialSum(nums.size() + 1);
     partialSum[0].first = 0;
     partialSum[0].second = -1;
     for(int i = 0; i < nums.size(); i++) {
         partialSum[i+1].first = partialSum[i].first + nums[i];
         partialSum[i+1].second = i;
         if (partialSum[i+1].first == 0) {
             result.push_back(0);
             result.push_back(i);
             return result;
         }
     }
     sort(partialSum.begin(), partialSum.end());
     for (int j = 1; j < partialSum.size()-1; j++) {
         if (partialSum[j].first == partialSum[j+1].first) {
             result.push_back(partialSum[j].second+1);
             result.push_back(partialSum[j+1].second);
             break; // only one solution is needed
         }
     }
     return result;
 }
コード例 #3
0
ファイル: QuadratureRule.cpp プロジェクト: nuraiman/lifev
UInt QuadratureRule::checkExactnessTriangle() const
{

    // Degre 0: f=1 => exact value : 1/2
    Real partialSum(0.0);

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += weight(iterQ);
    }

    if ( std::fabs(partialSum - 0.5) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 1: f=x+y => exact value : 1/3
    partialSum=0.0;

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0) + quadPointCoor(iterQ,1))
                      * weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/3.0) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 2: f=x*x+3*x*y => exact value : 5/24
    partialSum=0.0;

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       + 3*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1))
                      * weight(iterQ);
    }

    if ( std::fabs(partialSum - 5.0/24.0) > S_exactnessTol)
    {
        return 1;
    }

    // Degre 3: f=x*x*y-5*x*y => exact value :-23/120
    partialSum=0.0;

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1)
                       - 5*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1))
                      * weight(iterQ);
    }

    if ( std::fabs(partialSum + 23.0/120.0) > S_exactnessTol)
    {
        return 2;
    }

    // Degre 4: f=x*x*x*y - x*y*y + y*y*y*y => exact value : 1/40
    partialSum=0.0;

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1)
                       - quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1) )
                      * weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/40.0) > S_exactnessTol)
    {
        return 3;
    }

    // Degre 5: f= x^4*y - x*y^2 + y^5 => exact value : 1/84
    partialSum=0.0;

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += ( std::pow(quadPointCoor(iterQ,0),4.0)*quadPointCoor(iterQ,1)
                        -quadPointCoor(iterQ,0)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)
                        + std::pow(quadPointCoor(iterQ,1),5.0)
                      ) * weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/84.0) > S_exactnessTol)
    {
        return 4;
    }


    return 5;
}
コード例 #4
0
ファイル: QuadratureRule.cpp プロジェクト: nuraiman/lifev
UInt QuadratureRule::checkExactnessSegment() const
{
    // Degre 0: f=1 => exact value : 1
    Real partialSum(0.0);

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 1: f=x => exact value: 1/2
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0))*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/2.0) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 2: f=x*x => exact value: 1/3
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0) )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/3.0) > S_exactnessTol)
    {
        return 1;
    }

    // Degre 3: f=x*x*x => exact value: 1/4
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0) )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/4.0) > S_exactnessTol)
    {
        return 2;
    }

    // Degre 4: f=x*x*x*x => exact value: 1/5
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                      )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/5.0) > S_exactnessTol)
    {
        return 3;
    }

    // Degre 5: f=x*x*x*x*x => exact value: 1/6
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       *quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       *quadPointCoor(iterQ,0)
                      )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/6.0) > S_exactnessTol)
    {
        return 4;
    }

    return 5;
}
コード例 #5
0
ファイル: QuadratureRule.cpp プロジェクト: nuraiman/lifev
UInt QuadratureRule::checkExactnessTetra() const
{
    // Degre 0: f=1 => exact value : 1/6
    Real partialSum(0.0);

    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/6.0) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 1: f=x+y+2z => exact value: 1/6
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0) + quadPointCoor(iterQ,1) + 2*quadPointCoor(iterQ,2) )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/6.0) > S_exactnessTol)
    {
        return 0;
    }

    // Degre 2: f=x*x + y*z + y*y => exact value: 1/24
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,2)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)
                      )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/24.0) > S_exactnessTol)
    {
        return 1;
    }

    // Degre 3: f=x*x*x + y*y + y*y*z + x => exact value: 5/72
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,2)
                       + quadPointCoor(iterQ,0)
                      )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 5.0/72.0) > S_exactnessTol)
    {
        return 2;
    }

    // Degre 4: f=x*x*x*x +y*y*z*z + z*z*z => exact value: 1/72
    partialSum=0.0;
    for (UInt iterQ(0); iterQ<M_nbQuadPt; ++iterQ)
    {
        partialSum += (quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)*quadPointCoor(iterQ,0)
                       + quadPointCoor(iterQ,1)*quadPointCoor(iterQ,1)*quadPointCoor(iterQ,2)*quadPointCoor(iterQ,2)
                       + quadPointCoor(iterQ,2)*quadPointCoor(iterQ,2)*quadPointCoor(iterQ,2)
                      )*weight(iterQ);
    }

    if ( std::fabs(partialSum - 1.0/72.0) > S_exactnessTol)
    {
        return 3;
    }

    return 4;

}