单纯质因数(pprim)(nhoi2014小学甲组)

#include<bits/stdc++.h>
using namespace std;
int n;
bool ss(int x){
    if(x<=1) return true;
    for(int i=2;i*i<=x;i++)
        if(x%i==0) return true;
    return false;
}
bool f(int y){
    for(int i=2;i*i<=y;i++){
        int cnt=0;
        while(y%i==0){
            if(cnt==1) return false;
            cnt++;
            y/=i;
        }
    }
    return true;
}
int main(){
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
        if(f(i)&&ss(i)) cout<<i<<" ";
    return 0;
}

/* * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ #include "GraphicsPrimitiveMgr.h" #include "Region.h" #include "sun_java2d_loops_Blit.h" /* * Class: sun_java2d_loops_Blit * Method: Blit * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/SurfaceData;Ljava/awt/Composite;IIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_loops_Blit_Blit (JNIEnv *env, jobject self, jobject srcData, jobject dstData, jobject comp, jobject clip, jint srcx, jint srcy, jint dstx, jint dsty, jint width, jint height) { SurfaceDataOps *srcOps; SurfaceDataOps *dstOps; SurfaceDataRasInfo srcInfo; SurfaceDataRasInfo dstInfo; NativePrimitive *pPrim; CompositeInfo compInfo; RegionData clipInfo; jint dstFlags; pPrim = GetNativePrim(env, self); if (pPrim == NULL) { return; } if (pPrim->pCompType->getCompInfo != NULL) { (*pPrim->pCompType->getCompInfo)(env, &compInfo, comp); } if (Region_GetInfo(env, clip, &clipInfo)) { return; } srcOps = SurfaceData_GetOps(env, srcData); if (srcOps == 0) { return; } dstOps = SurfaceData_GetOps(env, dstData); if (dstOps == 0) { return; } if (width <= 0 || height <= 0) { return; } srcInfo.bounds.x1 = srcx; srcInfo.bounds.y1 = srcy; if (UNSAFE_TO_ADD(srcx, width) || UNSAFE_TO_ADD(srcy, height) || UNSAFE_TO_ADD(dstx, width) || UNSAFE_TO_ADD(dsty, height)) { return; } srcInfo.bounds.x2 = srcx + width; srcInfo.bounds.y2 = srcy + height; dstInfo.bounds.x1 = dstx; dstInfo.bounds.y1 = dsty; dstInfo.bounds.x2 = dstx + width; dstInfo.bounds.y2 = dsty + height; if (UNSAFE_TO_SUB(srcx, dstx) || UNSAFE_TO_SUB(srcy, dsty)) { return; } srcx -= dstx; srcy -= dsty; SurfaceData_IntersectBounds(&dstInfo.bounds, &clipInfo.bounds); if (srcOps->Lock(env, srcOps, &srcInfo, pPrim->srcflags) != SD_SUCCESS) { return; } dstFlags = pPrim->dstflags; if (!Region_IsRectangular(&clipInfo)) { dstFlags |= SD_LOCK_PARTIAL_WRITE; } if (dstOps->Lock(env, dstOps, &dstInfo, dstFlags) != SD_SUCCESS) { SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); return; } SurfaceData_IntersectBlitBounds(&dstInfo.bounds, &srcInfo.bounds, srcx, srcy); Region_IntersectBounds(&clipInfo, &dstInfo.bounds); if (!Region_IsEmpty(&clipInfo)) { srcOps->GetRasInfo(env, srcOps, &srcInfo); dstOps->GetRasInfo(env, dstOps, &dstInfo); if (srcInfo.rasBase && dstInfo.rasBase) { SurfaceDataBounds span; jint savesx = srcInfo.bounds.x1; jint savedx = dstInfo.bounds.x1; Region_StartIteration(env, &clipInfo); while (Region_NextIteration(&clipInfo, &span)) { void *pSrc = PtrCoord(srcInfo.rasBase, srcx + span.x1, srcInfo.pixelStride, srcy + span.y1, srcInfo.scanStride); void *pDst = PtrCoord(dstInfo.rasBase, span.x1, dstInfo.pixelStride, span.y1, dstInfo.scanStride); /* * Fix for 4804375 * REMIND: There should probably be a better * way to give the span coordinates to the * inner loop. This is only really needed * for the 1, 2, and 4 bit loops. */ srcInfo.bounds.x1 = srcx + span.x1; dstInfo.bounds.x1 = span.x1; (*pPrim->funcs.blit)(pSrc, pDst, span.x2 - span.x1, span.y2 - span.y1, &srcInfo, &dstInfo, pPrim, &compInfo); } Region_EndIteration(env, &clipInfo); srcInfo.bounds.x1 = savesx; dstInfo.bounds.x1 = savedx; } SurfaceData_InvokeRelease(env, dstOps, &dstInfo); SurfaceData_InvokeRelease(env, srcOps, &srcInfo); } SurfaceData_InvokeUnlock(env, dstOps, &dstInfo); SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); }
07-09
/* * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ #include "GraphicsPrimitiveMgr.h" #include "Region.h" #include "sun_java2d_loops_Blit.h" /* * Class: sun_java2d_loops_Blit * Method: Blit * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/SurfaceData;Ljava/awt/Composite;IIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_loops_Blit_Blit (JNIEnv *env, jobject self, jobject srcData, jobject dstData, jobject comp, jobject clip, jint srcx, jint srcy, jint dstx, jint dsty, jint width, jint height) { SurfaceDataOps *srcOps; SurfaceDataOps *dstOps; SurfaceDataRasInfo srcInfo; SurfaceDataRasInfo dstInfo; NativePrimitive *pPrim; CompositeInfo compInfo; RegionData clipInfo; jint dstFlags; pPrim = GetNativePrim(env, self); if (pPrim == NULL) { return; } if (pPrim->pCompType->getCompInfo != NULL) { (*pPrim->pCompType->getCompInfo)(env, &compInfo, comp); } if (Region_GetInfo(env, clip, &clipInfo)) { return; } srcOps = SurfaceData_GetOps(env, srcData); if (srcOps == 0) { return; } dstOps = SurfaceData_GetOps(env, dstData); if (dstOps == 0) { return; } srcInfo.bounds.x1 = srcx; srcInfo.bounds.y1 = srcy; srcInfo.bounds.x2 = srcx + width; srcInfo.bounds.y2 = srcy + height; dstInfo.bounds.x1 = dstx; dstInfo.bounds.y1 = dsty; dstInfo.bounds.x2 = dstx + width; dstInfo.bounds.y2 = dsty + height; srcx -= dstx; srcy -= dsty; SurfaceData_IntersectBounds(&dstInfo.bounds, &clipInfo.bounds); if (srcOps->Lock(env, srcOps, &srcInfo, pPrim->srcflags) != SD_SUCCESS) { return; } dstFlags = pPrim->dstflags; if (!Region_IsRectangular(&clipInfo)) { dstFlags |= SD_LOCK_PARTIAL_WRITE; } if (dstOps->Lock(env, dstOps, &dstInfo, dstFlags) != SD_SUCCESS) { SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); return; } SurfaceData_IntersectBlitBounds(&dstInfo.bounds, &srcInfo.bounds, srcx, srcy); Region_IntersectBounds(&clipInfo, &dstInfo.bounds); if (!Region_IsEmpty(&clipInfo)) { srcOps->GetRasInfo(env, srcOps, &srcInfo); dstOps->GetRasInfo(env, dstOps, &dstInfo); if (srcInfo.rasBase && dstInfo.rasBase) { SurfaceDataBounds span; jint savesx = srcInfo.bounds.x1; jint savedx = dstInfo.bounds.x1; Region_StartIteration(env, &clipInfo); while (Region_NextIteration(&clipInfo, &span)) { void *pSrc = PtrCoord(srcInfo.rasBase, srcx + span.x1, srcInfo.pixelStride, srcy + span.y1, srcInfo.scanStride); void *pDst = PtrCoord(dstInfo.rasBase, span.x1, dstInfo.pixelStride, span.y1, dstInfo.scanStride); /* * Fix for 4804375 * REMIND: There should probably be a better * way to give the span coordinates to the * inner loop. This is only really needed * for the 1, 2, and 4 bit loops. */ srcInfo.bounds.x1 = srcx + span.x1; dstInfo.bounds.x1 = span.x1; (*pPrim->funcs.blit)(pSrc, pDst, span.x2 - span.x1, span.y2 - span.y1, &srcInfo, &dstInfo, pPrim, &compInfo); } Region_EndIteration(env, &clipInfo); srcInfo.bounds.x1 = savesx; dstInfo.bounds.x1 = savedx; } SurfaceData_InvokeRelease(env, dstOps, &dstInfo); SurfaceData_InvokeRelease(env, srcOps, &srcInfo); } SurfaceData_InvokeUnlock(env, dstOps, &dstInfo); SurfaceData_InvokeUnlock(env, srcOps, &srcInfo); } 以上代码中的整数溢出漏洞会在什么情况下触发
07-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值