A. c語言編寫函數判斷素數
/判斷是不是素數
#include<stdio.h>
int prime(int a);//函數聲明
int main()
{
int n,i;
scanf("%d",&n);
if(prime(n)==1) //return返回值1
printf("prime");
else
printf("not prime") ;
}
int prime(int a)
{
int i;
for(i=2;i<a;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
素數的演算法
1、素數:除了1和本身外無法被其他自然數整除的數,叫做素數,也稱質數,如:2,3,5,7一系列。
2、合數:比1大但不是素數的數稱為合數,如:8,9,10一系列。
3、特殊的數字:1和0既不是素數也不是合數。
4、演算法: 1>確定性演算法 2>隨機性演算法 3>Eratosthenes演算法。
B. 用C語言寫出求素數的編程
參考代碼:
int main(){
int num,m,n,d,c,priSum;
printf("Enter the Range Between m,n ");
scanf("%d %d", &m,&n);
for (num = n; num <= m; num++)
{
for(d = 2; d < num; d++)
{
if (num % d == 0){
continue;
}
}
if (d == num){
priSum += d;
c++;
}
}
printf("m~n之間的素數個數:%d,和 %d ",c,priSum);
return 0;
}
C. 寫一個C語言編程,求素數及反序數
什麼意思(要求)?我這兒有我寫的一個判斷既是迴文數又是素數的程序,應該是一樣的吧?
#include<iostream>
//求既是迴文數又是素數的五位數,迴文數:即12121=12121;5687865=5687865;
#include "math.h"
#include "stdlib.h"
using namespace std;
int main()
{
int i;
int m = 0;
int j;
int num1 = 0;
for (i = 10000; i<100000; i++)
{
for (j = 2; j <= sqrt(i); j++)
{
if (i%j == 0)
{
break;
}
}
if (j>sqrt(i))
{
m = (i % 10) * 10000 + (i % 100 - i % 10) / 10 * 1000 + (i % 1000 - i % 100) / 100 * 100 + (i % 10000 - i % 1000) / 1000 * 10 + (i - i % 10000) / 10000;
if (m == i)
{
num1 = num1 + 1;
}
}
}
cout << "We find " << num1 << " number of the kind you want to find." << endl;
system("pause");
return 0;
}
D. C語言編寫一個程序判斷一個數是否為素數急求
目的:判斷一個數是否為素數
#include<stdio.h>
intmain(void)
{
int m;
inti;
scanf("%d",&m);
for(i=2;i< m;i++) //2到(m-1)的數去除m
{
if(m%i==0)//判斷能否整除
break;
}
if(i== m)
printf("YES!
");
else
printf("No!
");
}
for循環的功能:
①若能整除,通過break跳出函數;
②若一直到m-1都不能整除,此時i再自增1到m,不滿足i< m跳出for循環,這時i= m。
(4)c語言編程求素數擴展閱讀:
素數定理:
1、在一個大於1的數a和它的2倍之間(即區間(a,2a]中)必存在至少一個素數。
2、存在任意長度的素數等差數列。
3、一個偶數可以寫成兩個合數之和,其中每一個合數都最多隻有9個質因數。(挪威數學家布朗,1920年)。
4、一個偶數必定可以寫成一個質數加上一個合成數,其中合數的因子個數有上界。(瑞尼,1948年)。
5、一個偶數必定可以寫成一個質數加上一個最多由5個因子所組成的合成數。後來,有人簡稱這結果為(1+5)(中國潘承洞,1968年)。
6、一個充分大偶數必定可以寫成一個素數加上一個最多由2個質因子所組成的合成數。簡稱為(1+2)。
E. c語言求素數的演算法
根據素數的性質,代碼設計如下:
設計一:判斷n是否能被1~n-1整除,不能整除為素數
#include<stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n ; i++)
{
if (n%i == 0)
break;
}
if (i < n) printf("This is not a prime.");
else printf("This is a prime.");
return 0;
}
設計二:判斷n是否能被2~√n間的整數整除,不能整除為素數
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
(5)c語言編程求素數擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
F. C語言編程:編寫程序,求3-100之間所有素數之和(要求判斷素數由函數實現)。
#include"stdio.h"
intisprime(intn)//判斷n是否為素數,是返回1,不是返回0
{
inti;
if(n==1)
return0;//1不是素數
for(i=2;i<=n/2;i++)//如果從2開始,到這個數半值時,有一個數能被整除,則不是素數
if(n%i==0)
return0;
//從2開始,到這個數一半值時,沒有一個能整除,則是素數
return1;
}
intmain()
{
intsum=0;
inti;
for(i=3;i<=100;i++)
if(isprime(i)==1)//是素數就加到sum上去,
sum+=i;
printf("3到100之間的素數之和為:%d ",sum);
}
G. 用C語言編寫在自然數中輸出100以內的素數
#include<stdio.h>
//輸出100之內的所有素數
int main()
{
int i;
int j;
int flag = 1;
for(i = 2;i <= 100;i++)
{
for(j = 2;j <= i / 2;j++)
{
if(i % j ==0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
printf("%d ",i);
}
flag = 1;
}
return 0;
}
(7)c語言編程求素數擴展閱讀
#include <stdio.h>
int main()
{
int a;
for (int i = 2; i < 100; i++)
{
int a = 0;
/* code */
for (int j = 2; j < i; j++)
{
/* code */
if (i % j == 0)
{
/* code */
a++;
}
}
if (a == 0)
{
/* code */
printf("%d is sushu ", i);
}
else
{
/* code */
printf("%d is not sushu ", i);
}
}
return 0;
}
H. C語言編程 求素數 求解釋
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m); //一個數不是素數,那麼開平方也一定不是素數。
//將一個數開平方再取整,可以減少比較次數,提高運行效率。
for(i=2;i<=k;i++)//一個一個比較看這個數能不能除盡小於它的所有數
if(m%i==0) //如果可以除盡這個數,那麼就跳出循環
break;
if(i>=k+1) //如果i>=k+1 說明一直循環到最後了,中間沒有可以除盡的數,這個數就是素數
printf("%d is a prime number\n",m);
else //相反就不是素數
printf("%d is not a prime number\n",m);
system("pause");
}
I. c語言編程求素數(也即是質數)
#include <stdio.h>
void main()
{ int x;
int i,f;
f=0;
scanf("%d",&x);
for(i=2;i<x/2+1;i++)
if(x%i==0) { f=1; break;}
else {f=0; continue;}
if(f) printf("%d不是素數\n",x);
else printf("%d是素數\n",x);
system("pause");
}
比之前的少一般的計算量