14_判斷n是否為素數
阿新 • • 發佈:2021-01-26
技術標籤:C語言入門碼圖題目
14_判斷n是否為素數
通過課程進入 題 號: 18 14_判斷n是否為素數 語言要求: C++
輸入一個大於3的整數n,判斷它是否為素數。(輸出yes/no)
例如,輸入4,輸出no;
輸入7,輸出yes。
錯誤輸入,則輸出error。所有輸出沒有回車符號。
判斷一個數是否為素數,就是看它除了1和本身外還有沒有其它因數,採用for迴圈和運算子%看餘數是否為0即可。
如果一個數不是素數而是合數, 那麼一定可以由兩個自然數相乘得到, 其中一個大於或等於它的平方根,一個小於或等於它的平方根,並且成對出現。
所以在求素數的時候,理論上要將素數與1到素數本身中間的所有整數都相除,看是否有整除的數,如果有,那肯定不是素數。但是從演算法上考慮,為了減少重複量,開平方後面的數就不用相除。具體分析見此篇文章: 點選進入。
C程式碼:
#include<stdio.h>
#include<math.h>
int main()
{
int i,n,p=0;
scanf("%d",&n);
for(i=2;i<(int)sqrt((double)n);i++)
//注意sqrt函式的資料型別為double型,進行強制型別轉換
{
if(n%i==0)
{
p=1;
printf("no");
break;
}
}
if(p==0)//p=0即表明n為素數
printf("yes");
return 0;
}
C++程式碼:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
int i=2,k=0;
scanf("%d",&n);
if(n<3)
cout<<"error"<<endl;
else
{
for(i=2;i<(int)sqrt((double)n);i++)//強制型別轉換
{
if (n%i==0)
{
k=1;
break;
}
}
if(k==0)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}
測試結果: