日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跟素数相关的题

發(fā)布時(shí)間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跟素数相关的题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 問題 A: 素?cái)?shù)
  • 問題 B: Prime Number
  • 問題C: Goldbach猜想

問題 A: 素?cái)?shù)

http://codeup.cn/problem.php?cid=100000591&pid=0

#include<cstdio> bool a[10005]={false}; int main(void) {a[2]=false;for(int i=2;i<=10005;i++){if(a[i]==false)for(int j=i+i;j<=10005;j=j+i){a[j]=true;}}int n;while( scanf("%d",&n) != EOF){bool flag=false;for(int i=2;i<n;i++){if(!a[i]){if(i%10==1){flag=true;printf("%d ",i);}}}if(!flag)printf("-1");printf("\n");} return 0; }

問題 B: Prime Number

http://codeup.cn/problem.php?cid=100000591&pid=1


題目的意思: 輸出第k個(gè)質(zhì)數(shù)

#include<cstdio> bool a[10000005]={false}; int main(void) {a[2]=false;for(int i=2;i<=10000005;i++){if(a[i]==false)for(int j=i+i;j<=10000005;j=j+i){a[j]=true;}}int n;while( scanf("%d",&n) != EOF){bool flag=false;int count=0;for(int i=2;i<10000005;i++){if(!a[i]){count++;if(count==n){flag=true;printf("%d",i);break;}}}if(!flag)printf("-1");printf("\n");} return 0; }

問題C: Goldbach猜想

http://codeup.cn/problem.php?cid=100000591&pid=2


需要注意的是:
10=3+7
10=5+5

下面是一個(gè)比較笨的方法,只能說太憨批了。
我以為 10=5+5用雙指針的話,還得在里面再寫一個(gè)判斷條件
后來發(fā)現(xiàn)根本不用。left<=right 最后這兩指針都指向了同一個(gè)數(shù),即 5

#include<cstdio> bool a[100005]={false}; int b[10000]={0}; int main(void) {a[2]=false;int k=0;for(int i=2;i<=100005;i++){if(a[i]==false) for(int j=i+i;j<=100005;j=j+i){a[j]=true;}}for(int i=2;i<=100005;i++){if(a[i]==false)b[k++]=i; }int n;while(1){scanf("%d",&n);int count=0;if(n==0)break;int left,right;left=0;right=k-1;bool flag=false;if(n==4)printf("1\n");else{while(left<=right&&n!=4){if(b[left]*2==n){flag=true;count++;} if(b[left]+b[right]==n){count++;right--;left--;}if(b[left]+b[right]<n){left++;}if(b[left]+b[right]>n){right--;}}if(!flag)printf("%d\n",count);elseprintf("%d\n",count-1);}} return 0; }

簡單的寫法:

#include<cstdio> bool a[100005]={false}; int b[10000]={0}; int main(void) {a[2]=false;int k=0;for(int i=2;i<=100005;i++){if(a[i]==false) for(int j=i+i;j<=100005;j=j+i){a[j]=true;}}for(int i=2;i<=100005;i++){if(a[i]==false)b[k++]=i; }int n;while(1){scanf("%d",&n);int count=0;if(n==0)break;int left,right;left=0;right=k-1;bool flag=false;while(left<=right){if(b[left]+b[right]==n){count++;right--;left--;}if(b[left]+b[right]<n){left++;}if(b[left]+b[right]>n){right--;}}printf("%d\n",count);}return 0; }

總結(jié)

以上是生活随笔為你收集整理的跟素数相关的题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。