C语言(17)孪生素数问题
来源:互联网 发布:CSI网络犯罪调查百度云 编辑:程序博客网 时间:2024/05/21 04:17
- 输入
- 第一行给出N(0<N<100)表示测试数据组数。
接下来组测试数据给出m,表示找出m之前的所有孪生素数。
(0<m<1000000) - 输出
- 每组测试数据输出占一行,该行为m范围内所有孪生素数组数。
- 样例输入
114
- 样例输出
4
#include <stdio.h>#include <math.h>int func(int);int main(void){int n, m, i, j, num;int buf[100000]={0};scanf("%d", &n);j=0;buf[j++]=2;/*把2到1000000的素数放到数组里*/for(i=3; i<1000001; i += 2){if(func(i) == 1){buf[j++] = i;}}while(n--){num=0;scanf("%d", &m);for(i=1; i<=m; i++){if(buf[i]>m){break;}if((buf[i]-buf[i-1] == 1) || (buf[i]-buf[i-1] == 2)){num++;}}printf("%d\n", num);}return 0;}/*求是否为素数*/int func(int n){if(n<2){return -1;}int i;for(i=2; i<=sqrt(n); i++){if(n%i==0){return 0;}}return 1;}
大神的代码
#include <iostream>#include<math.h>using namespace std;bool vis[1000010];int main(){int n=1000010;int m =sqrt(n+0.5);int c=0;for(int i =2;i<=m;i++)if(!vis[i]){for (int j = i*i;j<=n;j+=i) vis[j]=1; }cin>>n;while(n--){int count=0,m;cin>>m;for(int i=3;i<m-1;i++){if(!vis[i] && !vis[i+2]) count++;}if(m>3)cout<<count+1<<endl;else if(m==3) cout<<"1"<<endl;else cout<<"0"<<endl;}return 0;}
阅读全文
0 0
- C语言(17)孪生素数问题
- NYOJ - 孪生素数问题
- 孪生素数问题 nyoj
- NYOJ-孪生素数问题
- 孪生素数问题
- 孪生素数问题
- 孪生素数问题
- nyoj26孪生素数问题
- 孪生素数问题
- 26 孪生素数问题
- NYOJ-孪生素数问题
- nyoj26孪生素数问题
- 孪生素数问题
- NYOJ 孪生素数问题
- 孪生素数问题
- 孪生素数问题
- 孪生素数问题
- 孪生素数问题
- Windows 7远程桌面连接Ubuntu14.04
- 葡萄城ActiveReports 企业报表软件荣获软博会金奖
- C++对于函数名重载的要点以及extren "C"
- mongodb删除数据
- Unity3D Transform中有关旋转的属性和方法测试
- C语言(17)孪生素数问题
- 奇怪的群名片
- C++ Excel库使用记录
- 1123. Is It a Complete AVL Tree (30)
- hdu
- SpringCloud 学习记录(一):服务注册与发现(eureka+feign)
- 二维数组
- python中的try/except/else/finally语句
- 小P的故事——神奇的发票报销(背包问题)