c++判断素数

供稿:hz-xin.com     日期:2025-01-13
用c++判断一个数是否为质数

# include int main(void){ int i, j, k = 0;printf("请输入一个数字判断是否是素数:");scanf("%d", &i);for (j = i - 1; j >= 2; j--){if (i % j == 0)k = j;//把j里面能把i整除的数赋给k}if (k)//如果j赋给了k,那么k不等于0,为真,输出不是素数;如果j没有赋给k,那么k等于0,为假,输出是素数printf("%d不是素数!
", i);elseprintf("%d是素数!
", i); return 0;}

就是判断素数的一些原理,注释如下:
bool is_prime(int n) //对n进行判断{ if(n=n就可以了,因为此时已经不存在比i大的数能把n除开啦,仔细想想就会明白啦 { if(n % i == 0) return false; } return true;}

for(y=2;y<x;y++){
if(x%y==0){
return false;
break; //这句是多余的,return就跳出函数了
}
return true; //把 这句移到下面这个大括号外面
}
// 移到这里

#include<fstream>
#include<iomanip>
#include<iostream>
using namespace std;
int prime(int x)
{
int y;
// 质数肯定是不小于1的自然数
if(x<2)
{
return false;
}
for(y=2;y<x;y++)
{
if(x%y==0)
{
return false;
}
}
// 这个语句不应该在 for 循环里面,这是你程序出错的原因
return true;
}
int main(){
int m,a,b;
cout<<"请输入一个大于6的偶数:"<<endl;
cin>>m;
ofstream ofile;
ofile.open("d:\\myfile.txt");
// 判断文件流是否成功打开是个好习惯
if(ofile)
{
ofile<<m<<":"<<endl;
// 分解为两个质数之和
for(a=2;a<=m/2;a++){
b=m-a;
if((prime(a)==1)&&(prime(b)==1)) ofile<<a<<"+"<<b<<endl;
}
ofile.close();
}
return 0;
}

int prime(int x){
int y;
for(y=2;y<x;y++){
if(x%y==0){
return false;
}
}
return true;
}

改成这样



c++怎么判断一个数是否为素数?
在c++语言里,判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数 1、思路一,代码:include <stdio.h> int main(){ int a=0; \/\/ 素数的个数 int num=0; \/\/ 输入的整数 printf("输入一个整数:");scanf("%d",&num);for(...

用c++判断一个数是否是素数
首先先定义一个函数用于判断一个数是否是素数,接着主函数接受键盘输入,并调用该函数判断输入的数是否是素数。素数就是只能被1和自身整除的数。故判断n是否是素数,可以用n依次除以n-1,n-2……2,如果能整除则不是素数,否则是素数。参考代码如下:include<stdio.h>#include<iostream>using namespace...

怎样用C++判断一个数是素数
只能被1和本身整除的数是素数:#include<stdio.h>#include<math.h>void main(){int m,i,k;scanf("%d",&m);k=sqrt(m); \/*只要求到m的算术平方根就可以了,不需要求到m的一半.*\/for(i=2;i<=k;i++) \/*用for循环简洁一点*\/if(m%i==0)break;if(i>k)printf("%d is a prime nu...

c++判断素数
bool is_prime(int n) \/\/对n进行判断{ if(n<2) \/\/如果n小于2就不是素数,素数规定大于或等于2的整数 return false; for (int i=2;i*i<=n;i++) \/\/判断是否为素数可以使用所有比n小的数与n相除,如果能除开就不是素数,但是其实只需要判断到i*i>=n就可以了,因为...

C++素数判断代码
\/\/判断1个数n是否为质数,并不需要将小于n的每个整数除一次,只要将小于根号n的除一次就行了,因为若有大于根号n的i,n\/i必然小于根号n,前面已做过判定了。{if(n i == 0)\/\/ 如果存在大于2的整数能被整除,说明不是整数 return false;} return true;\/\/不存在则是质数 } int main(){ in...

用c++编程:输入一个数,判断其是不是素数
include<stdio.h> int main(){ int m, n;printf("请输入一个正整数:\\n");scanf_s("%d", &m);for (n=2; n < m - 1; n = n + 1)if (m % n == 0)break;if (n < m)printf("%d不是素数\\n",m);else printf("%d是素数\\n",m);} ...

C++判断素数个数
0; \/\/ 遍历m到n之间的数据,判断是否为素数,并统计 for(int i=m; i<=n;i++) { if (NumIsOnlyDivByOneAndItSelf(i)) { nCount++; } } printf("m到n之间的素数共有:%d\\r\\n", nCount);}

C语言,c++写判断素数
判断素数就是判断除了1和它本身外还有没有其他的约数,也就是能整除它的数,如果有的话就不是素数,没的话就是素数。所以要用循环来逐个判断,看能否整除,也不需要全部判断,所以用sqrt函数来开根号,只要判断根号的一边就行了。比如判断29的话,只要用29除以2到sqrt(29),就可判断是不是素数啦 ...

如何用C++判断一个数是不是质数(素数)
所以可以用一个for循环,用一个数从2开始一直除到比它小1的数,如果没有一个能被整除,这个数就是素数。return 是函数的返回值,就是说跳出一个函数时整个函数被一个值代替在原位置。返回什么要看它的执行情况。这里的意思是说如果是素数就返回1,如果不是素数就返回一个0。

C++判断素数的代码
该程序首先定义了一个函数 isPrime,用于判断一个整数是否为素数。isPrime 接收一个整数 num 作为参数,如果 num 不大于 1,则返回 false,如果 num 能被任何比 1 大但小于等于 sqrt(num) 的整数整除,则返回 false,否则返回 true。其中,双重循环用于遍历 num 向下取整后的所有整数。接着,程序读入...