『壹』 c語言請調用判斷是否素數的函數,實現輸出1000以內的孿生素數
首先明白什麼事孿生素數:孿生素數就是指相差2的素數對,例如 3和5,5和7,11和13。然後看代碼:
#include<stdio.h>
#include<math.h>
//判斷是否是素數,是返回1,不是返回0
intis_prime(intn)
{
inti,tmp=(int)sqrt(n);
for(i=2;i<=tmp;++i)
{
if(n%i==0)
{
return0;
}
}
return1;
}
intmain()
{
inti;
for(i=2;i+2<1000;++i)
{
if(is_prime(i)&&is_prime(i+2))
{
printf("%d%d ",i,i+2);
}
}
return0;
}
這是運行結果:
『貳』 孿生素數(C語言)
#include<stdion.h>
bool Issushu(int a){
int i = 2;
for(i = 2;i <= a/2;i++){
if(a%i == 0)
return false;
}
return true;
}
int main(){
int m = 0;
scanf("%d",&m);
if(m%2)
m--;
for(;m>2;m-=2){
if(Issushu(m)&&Issushu(m-2)){
printf("%d",m);
return 0;
}
printf("不存在");
return 0;
}
『叄』 孿生素數(C語言)
#include<stdio.h>
int isZhiShu(int m)
{
for(int i=2;i<=m/2;i++)
if(m%i==0)
{
return 0;
break;
}
return 1;
}
int main()
{
int n,i,a=0,b=0;
printf("please input a num");
scanf("%d",&n);
for(i=n;i>1;i--)
if(isZhiShu(i)==1)
{
a=b;
b=i;
if(a-b==2)
{
printf("the number is %d and %d",b,a);
break;
}
}
}
『肆』 c語言孿生素數,輸入一個數,輸出小於那個數的最大孿生素數,用函數。
看代碼:
#include<stdio.h>
#include<math.h>
//判斷是否是素數,是返回1,不是返回0
intis_prime(intn)
{
inti,tmp=(int)sqrt(n);
for(i=2;i<=tmp;++i)
{
if(n%i==0)
{
return0;
}
}
return1;
}
intmain()
{
inti,n;
printf("請輸入一個數:");
scanf("%d",&n);
for(i=n-1;i-2>=2;--i)//小於n,所以讓i從n-1開始
{
if(is_prime(i)&&is_prime(i-2))
{
printf("小於%d的最大孿生素數為:%d和%d ",n,i,i-2);
break;
}
}
return0;
}
運行:
『伍』 C語言編程。。孿生素數
樓主的兩個for循環用的不對,另外整個流程也是有問題的。改正的代碼如下:
#include<stdio.h>
#include<math.h>
intmain()
{
inta,b;/*輸入的兩個數據范圍*/
inti,j,k;
intnum=0,s;/*素數個數,素數標志*/
scanf("%d%d",&a,&b);
for(i=a;i+2<=b;i++)
{
s=1;/*先假設i是素數*/
k=sqrt(i);
for(j=2;j<=k;j++)
{
if(i%j==0)
{
s=0;/*i不是素數*/
break;
}
}
if(s)
{
k=sqrt(i+2);
for(j=2;j<=k;j++)
{
if((i+2)%j==0)
{
s=0;/*i+2不是素數*/
break;
}
}
if(s)
{
++num;/*i+2是素數*/
printf("第%d個孿生素數[%d,%d] ",num,i,i+2);
}
}
}
return0;
}
二、用GCC編譯測試結果:
『陸』 C語言題目:【函數】自定義素數函數,求孿生素數
#include<stdio.h>
int isprime(int n)
{int i;
for(i=2;i*i<=n;i++)
if(n%i==0)return 0;
return n>1;
}
int main()
{ int n,i;
scanf("%d",&n); //求n以內的孿生素數
for(i=3;i<n-1;i+=2)
if(isprime(i)&&isprime(i+2))
printf("%d----%d\n",i,i+2);
return 0;
}
『柒』 求C語言輸出1000對孿生素數的程序,程序對每個數只檢驗一次
#include "stdio.h"
int prime(int n){//素數
int i;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n,k;
for(k=0,n=3;k<1000;n+=2)
if(prime(n) && prime(n+2))
printf(++k%7 ? "%6d/%-6d " : "%6d/%-6d
",n,n+2);
if(k%7)
printf("
");
return 0;
}
當i==3時,(temp=(int)(sqrt(i)))==1
因為temp==1了,所以for(int j=2;j<=temp;++j)的循環就直接「跳過」了,也就不會執行循環體內的程序解決辦法是將for(int j=2;……)改為for(int j=1;……)將循環體內的if(i%j==0)改為if(j!=1 && i%j==0)更簡單的辦法是不利用平方根求素數的捷徑,而是直接對小於i的所有整數進行判斷。
(7)c語言孿生素數判斷程序擴展閱讀:
素數定理說明了素數在趨於無窮大時變得稀少的趨勢。而孿生素數,與素數一樣,也有相同的趨勢,並且這種趨勢比素數更為明顯。
由於孿生素數猜想的高知名度以及它與哥德巴赫猜想的聯系,因此不斷有學術共同體外的數學愛好者試圖證明它。有些人聲稱已經證明了孿生素數猜想。然而,尚未出現能夠通過專業數學工作者審視的證明。