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><<"";
}
1、写我们的头文件和主函数。写好我们的开头。
2、编写定义变量,我们语言定义一个i来用于后面的for循环。
3、我们输入一个数,在那之前我们要有一个printf()提示一下。
4、利用for循环看一看从2到n-1是否能被n整除,如果能就要break。
5、判断素数,如果程序正常结束,就i>=n,说明他就是素数。
6、如果通过break结束,他就会i<n,所以他就不是素数。
7、输出最后结果。
方法一:
#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);
}
目的:判断一个数是否为素数
# include <stdioh>
int main(void)
{
int m;
int i;
scanf("%d",&m);
for(i = 2; i < m; i++) //2到(m-1)的数去除m
{
if(m% i == 0) // 判断能否整除
break;
}
if (i == m)
printf("YES!\n");
else
printf("No!\n");
}
for循环的功能:
①若能整除,通过break跳出函数;
②若一直到m-1都不能整除,此时i再自增1到m,不满足i < m跳出for循环,这时i = m。
扩展资料:
素数定理:
1、在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。
2、存在任意长度的素数等差数列。
3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。
4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。
5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(中国潘承洞,1968年)。
6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)。
参考资料来源:百度百科-质数
素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数。
该代码的基本思路为:如果m不能被2~它的平方根中的任一数整除,m必定是素数。
代码解析如下:
main()
{
intm; //输入的整数
inti; //循环次数
intk; //m的平方根
scanf(%d,&m);//输入m
k=sqrt(m);//对m开方赋给k
for(i=2;i<=k;i++)//从2到k依次加1循环
if(m%i==0)break;//当m可以整除i时,退出,不整除,说明是素数
if(i>=k+1)
printf(%disaprimenumber\n,m);//i不小于k+1时,m是素数,否则,m不是素数
else
printf(%disnotaprimenumber\n,m);
}
扩展资料:
判断素数的程序代码的另一思路:判断一个整数m是否是素数,只需把m被 2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
代码及解析如下:
#include<stdioh>
intmain(){
inta=0; //素数的个数
intnum=0; //输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(inti=2;i<num;i++){
if(num%i==0){
a++; //素数个数加1
}
}
if(a==0){
printf("%d是素数。\n",num);
}else{
printf("%d不是素数。\n",num);
}
return0;
}
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语言程序、怎样用C++程序判断一个数是否为素数、怎么用C语言写出判断素数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)