1. 程式人生 > 其它 >14_判斷n是否為素數

14_判斷n是否為素數

技術標籤: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; }

測試結果:
在這裡插入圖片描述