A. c語言判斷素數共有幾種方法
判斷是不是素數,素數就是只能被1和本身整除的自然數。
void
main()
{
int
m,i,k;
printf("please
input
a
number:\n");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<k;i++)
if(m%i==0)
break;
if(i>=k)
printf("該數是素數");
else
printf("該數不是素數");
}
B. C語言判斷素數
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int prime(int x){
for(int i=2;i<x;i++){
if(x%i==0)
return 0;
}
return 1;
}
int main(){
int a=0; // 素數的個數
int num[9]; // 輸入的整數
int numl[9]={0};
printf("輸入10個整數:\n");
cfu:
//有個小BUG需要輸入11個數,最後一個不算入計算之內。
for(int i = 0;i < 10;i++){
scanf("%d\n",&num[i]);
}
for (int i = 0;i < 10;i++)
{
if (num[i] >= 50 && num[i] <= 2000)
{
//判斷是不是素數;
if(prime(num[i])==1){
printf("%d 不是素數\n",num[i]);
}
else{
printf("%d 是素數\n",num[i]);
numl[a++] = num[i];
}
}else{
printf("請輸入50到2000之間的數\n");
goto cfu;
}
}
//排序寫在這里就可以了。
int lenth = a;
cout << "長度為: "<< lenth << endl;
for (int i = 0;i < lenth-1;i++)
{
for (int j = 0;j < lenth-1-i;j++)
{
if (numl[j] < numl[j+1] )
{
int temps = numl[j];
numl[j] = numl[j+1];
numl[j+1] = temps;
}
}
}
for (int i=0;i<lenth;i++)
{
printf("%d ",numl[i]);
}
while(1);
return 0;
}
//好像看錯題了,我的是輸入10個數判斷是否是素數,,,,,
//這個重新寫了一個,就符合題的意思了,你想輸出其他的素數就自己加條件,當成拓展就可以了.
#include "stdafx.h"
#include <iostream>
using namespace std;
int prime(int x){
for(int i= 2;i< x ; i++){
if(x%i == 0)
return 0;
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int m,k=0;
int arr[2000]={0};
printf("輸入50到2000之間的整數: ");
cfu:
scanf("%d",&m);
if (m >= 50 && m <= 2000)
{
//判斷在m以內有素數
for (int i =2;i < m; i++)
{
if (prime(i)==1){
printf("%d 是素數\n",i);
arr[k++]= i;
if (k == 10)
{
break;
}
}else{
printf("%d 不是素數\n",i);
}
}
}else{
printf("輸入50到2000之間的整數");
goto cfu;
}
cout << "K的值: "<< k << endl;
for (int i = 0;i < k-1;i++)
{
for (int j = 0;j < k-1-i;j++)
{
if (arr[j] < arr[j+1] )
{
int temps = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temps;
}
}
}
printf("10個數排序:");
for (int i = 0;i< k; i++)
{
printf("%d ",arr[i]);
}
while(1);
return 0;
}
C. C語言編寫一個程序判斷一個數是否為素數急求
1、首先打開編輯器軟體,在裡面新的C語言文件里引入頭文件並輸入主函數,在主函數中輸入代碼:
D. 用C語言如何判斷素數
素數又稱質數,所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。
思路1、判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。
思路2、判斷方法還可以簡化。
m 不必被2~m-1之間的每一個整數去除,只需被2~√m之間的每一個整數去除就可以了。如果 m 不能被2~√m間任一整數整除,m必定是素數。例如判別17是是否為素數,只需使17被2~4之間的每一個整數去除,由於都不能整除,可以判定17是素數。
原因:因為如果m能被2~m-1之間任一整數整除,其二個因子必定有一個小於或等於√m,另一個大於或等於√m。
例如16能被2、4、8整除,16=2*8,2小於 4,8大於4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可。
兩種思路的代碼請看解析。
拓展資料:
素數(prime number)又稱質數,有無限個。素數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
網路——C語言
E. 如何用c語言判斷一個數是不是素數
判斷一個整數m是否是素數,只需把m被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1)的代碼:
#include <stdio.h>
int main(){
int a=0; // 素數的個數
int num=0; // 輸入的整數
printf("輸入一個整數:");
scanf("%d",&num);
for(int i=2;i<num;i++){if(num%i==0){a++; // 素數個數加1}}
if(a==0){printf("%d是素數。 ", num);}else{printf("%d不是素數。 ", num);}return 0;}
F. 如何用c語言編程判斷一個數是不是素數
方法一:
#include<stdio.h>
int main(){
int i,j;
printf("請輸入一個正整數。\n");
scanf("%d",&i);
if(i<2)
printf("小於2,請重新輸入。\n");
elseif(i%2==0)
printf("%d不是一個素數。\n",i);
else{
for(j=2;j<=i/2;j++){
if(i%j==0){
printf("%d不是一個素數。\n",i);
break;
}
if(j>i/2){
printf("%d是一個素數。\n",i);
break;
}
}
}
}
方法二:
#include<stdio.h>
int main(){
int a=0;
int num=0;
scanf("%d",&num);
for(inti=2;i<num-1;i++){
if(num%i==0){
a++;
}
}
if(a==0){
printf("YES\n");
}else{
printf("NO\n");
}
}
方法三:
#include"stdio.h"
int main(){
printf("\t\t\t\t\thelloworld\n");
int a,i;
do{
printf("inputnumberjudgeprimenumber:\n");
scanf("%d",&a);
for(i=2;i<a;i++)
if(a%i==0)break;
if(i==a)
printf("%d是素數\n",a);
else
printf("%d不是素數\n",a);
}while(a!=0);
}
G. c語言怎麼判斷一個數是素數
判斷是否是質數最直觀和簡單的方法就是從2開始直接除,能除盡(余數為0)就不是質數。則C語言實現為:
int isprime(int m)
{
int i;
for(i=2;i<m;i++)
if(m%i==0)
return 0;
else
return 1;
}
該演算法的時間復雜度O(n)。
可以改進一下,根據如果一個數是合數,那麼它的最小質因數肯定小於等於它的平方根。用反證法可以證明一下。假設x是n的最小質因數,則存在n/x=p。p>x,x*p=n。如果x不小於等於它的平方根,則x*x>n,而p>x,故x*p>n,假設不成立。合數是與質數相對應的自然數。一個大於1的自然數如果它不是合數,則它是質數。也就是說如果一個數能被它的最小質因數整除的話,那它肯定是合數,即不是質數。所以判斷一個數是否是質數,只需判斷它是否能被小於它開跟號後的所有數整除,因此,這樣做的運算少了很多,降低了時間復雜度。