
思路1:
判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码如下:
#include <stdioh>
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是素数。\n", num);
}else{
printf("%d不是素数。\n", num);
}
return 0;
}
思路2:
另外判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。代码如下:
#include <stdioh>
#include <mathh>
void main(){
int m; // 输入的整数
int i; // 循环次数
int k; // m 的平方根
printf("输入一个整数:");
scanf("%d",&m);
// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型
k=(int)sqrt( (double)m );
for(i=2;i<=k;i++)
if(m%i==0)
break;
// 如果完成所有循环,那么m为素数
// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k
if(i>k)
printf("%d是素数。\n",m);
else
printf("%d不是素数。\n",m);
return 0;
}
以下是求100以内素数的代码:
i = 2;
while(i < 100):
j = 2;
while (j <= (i/j)):
if not (i%j):break
j = j +1
if(j > i /j):print (i," 是素数")
i = i+1
C语言-寻找素数
附代码:
#include<stdioh>
#include<mathh>
int main()//原理:设ab=c,a<b,则有a<根号c<b。若设a恒小于根号c,则只需判断a是否为因数
{
int a, b;
printf("请按从小到大输入两个素数:");
scanf_s("%d %d", &a, &b);
int n = 0,m=0,sum = 0;
double i, j;//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数
for (i = a; i <= b; i++)
{
m = 0;
int c = int(pow(i, 05));
for (j = 2; j <= c; j++)
{
if ((i / j - int(i / j)) == 00)
{
m++;//m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数
}
}
if (m==0)
{
printf("找到素数:%d\n", int(i));
n++;
sum = sum + i;
}
}
printf("大于等于%d,小于等于%d的素数的个数为:%d\n", a, b, n);
printf("它们的和为:%d", sum);
return 0;
}
#include<iostream>
#include"mathh"
using namespace std;
bool isPrimeNumber(int number){//判断是否为素数
float sqrtOfNum=sqrt(number);
for(int j=2;j<=sqrtOfNum;j++)//从2到number的算术平方根迭代
if(number/jj==number)//判断j是否为number的因数
return false;
return true;
}
void printNum(int number){//打印出<=number的所有质数
int j=0;
for(int i=2;i<=number;i++)
if(isPrimeNumber(i)==true){
cout<<("%-5d",i)<<"";
j++;
if(j%10==0)//每隔十个数字换行
cout<<endl;
}
}
int main(){
long start=time(NULL);
cout<<(bool)isPrimeNumber(29)<<endl;
printNum(1000);
long end=time(NULL);
cout<<endl<<"Time spent:"<<(end-start+1)<<endl;
}
扩展资料:
C++100以内的素数代码:
#include<iostream>
#include<mathh>
using namespace std;
const int N=300;
bool prime[N];//布尔数组变量0、1
void primeNum(int a);
void printPrimeNum();
//主函数
int main()
{
primeNum(N);
printPrimeNum();
return 0;
}
//得到N以内的素数
void primeNum(int a)
{
int i,j,n=0;
for(i=2;i<a;i++)//第一轮筛选去掉2的倍数
{
if(i%2)prime<i>=true;
else prime<i>=false;
}
for(i=3;i<=sqrt((double)a);i++)//double(N)是将N强制转换为双精度整型,求平方根i=3,5,7,9
{
if(prime<i>)
for(j=2i;j<N;j+=i)prime[j]=false;//第二轮筛选相当于j=ni,去掉3,5,7的倍数
}//经过两轮筛选相当于去掉了2,3,5,7的倍数
}
//打印N以内的素数
void printPrimeNum()
{
int i,n=0,primeList[N];
for(i=2;i<N;i++)
if((i==2)||(prime<i>))primeList[n]=i,n++;
cout<<N<<"以内的素数个数为:"<<n<<endl<<"它们分别是:"<<endl;
for(i=0;i<n;i++)cout<<primeList<i><<"";
}
方法一:
#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);
}
以下是C++代码:
Copy code
#include <iostream>
using namespace std;
bool isPrime(int num){
if(num < 2){
return false;
}
for(int i=2; ii<=num; i++){
if(num % i == 0){
return false;
}
}
return true;
}
int main(){
int n;
cout << "请输入正整数n:";
cin >> n;
if(isPrime(n)){
cout << "yes" << endl;
}else{
cout << "no" << endl;
}
return 0;
}
该程序首先定义了一个函数 isPrime,用于判断一个整数是否为素数。isPrime 接收一个整数 num 作为参数,如果 num 不大于 1,则返回 false,如果 num 能被任何比 1 大但小于等于 sqrt(num) 的整数整除,则返回 false,否则返回 true。其中,双重循环用于遍历 num 向下取整后的所有整数。
接着,程序读入一个正整数 n 。如果 n 是素数,则输出 "yes",否则输出 "no"。
需要注意的是,本程序中使用了布尔值来表示判断结果,如果需要对素数进行一
c语言判断素数的函数程序:
经分析,以上代码使用flag的值来判断输入的n是否为素数,flag=1,n为素数;flag=0,n不是素数。完善if条件语句,第一个if,主函数中的if调用函数,需要填入一个参数,即prime(n);第二个if,是判断什么情况下flag=0,即输入的整数不为素数,即(n/i==0),余数为0,可以整除;最后返回flag的值,returnflag
但是经过运行可以知道,n=4的时候,程序判断4是素数,明显是错误的,n取0和1的时候同理,程序存在漏洞。分析得知,在定义函数的过程中,for循环条件语句,i=0,如果为负整数,另加判断条件,略)
以上就是关于如何编写一个C语言程序判断一个数是否是素数全部的内容,包括:如何编写一个C语言程序判断一个数是否是素数、python判断素数的程序、求判断素数的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)