素数是仅能被1和本身整除的数。
我们可用一个循环使需要判断的数从2开始一直到它本身进行“除”验证即可判断。程序如下,
#include<stdioh>
int isp(int m) //定义一个判断素数的函数
{
int i;
for(i=2;i<m;i++) //将需要判断的数从2开始进行“除”运算
if(m%i==0)return 0; //m%i==0用于判断从2至m本身 有没有能够整除的数
return 1; //若有某一个数能被整除,说明此数不是素数“返回0”,若没有能被整除的,说明它是素数“返回1”
}
void main()
{
int i,j;
for(i=2,j=0;i<100;i++) //设定判断数值的范围,从2到99,因为1和100不用考虑,此处你也可以把范围自行设定,
if(isp(i)) //调用素数判断函数isp(),若返回值为“1”,证明是素数,执行下列运算,返回为“0”,则进行下一个for循环。
{
j++;
printf("\n第%d素数是:%d\n",j,i);
}
}
运行得知 1到100区间内 总共有25个素数。
#include "stdioh"
int isprime(int n)//判断n是否是素数,是,返回1,不是返回0
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int sum=0,count=0,i;
for(i=1000;i>2;i--)
if(isprime(i)==1)
{
//1000以内最大素数,那就从1000开始到2,去找20个素数就行
sum+=i;
count++;
if(count==20)
break;
}
printf("求1000以内最大的20个素数之和为:%d\n",sum);
}
结果:
#include <stdioh>
#include <conioh>
#define ARR_LEN 255 /数组长度上限/
/ 试除法判断素数 /
/ 大于1的自然数num,若其不能被2~num^1/2(num的平方根)之间的任一自然数整除,则其为素数 /
/ num是素数返回1,否则返回0 /
int isPrime (int num) {
int i;
if (num <= 1) / 素数必须是大于1的自然数 /
return 0;
if (num%2==0 && num!=2) / 除2之外的偶数显然不是素数 /
return 0;
for (i=2; ii<=num; i++)
if (num%i == 0)
return 0;
return 1;
}
/ 遍历并以试除法确定n以内的素数 /
/ 将n以内的素数存入primeNums,并返回素数个数 /
int primeNumbers (int primeNums[], int n) {
int i, j;
for (i=2, j=0; i<=n; i++)
if (isPrime (i)) {
primeNums[j] = i;
j++;
}
return j;
}
/打印数组/
/ int arr[]: 打印目标数组; int len: 元素个数 /
void printArray (int arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d\t", arr[i]);
putchar ('\n');
}
int main (void) {
int n, primeNums[ARR_LEN], prinmeCnt;
int sum = 0;
int i;
printf ("输入n:");
scanf ("%d", &n);
prinmeCnt = primeNumbers (primeNums, n); / n以内的素数存入数组primeNums,并将素数个数赋值于prinmeCnt /
if (prinmeCnt>=10)
for (i=prinmeCnt-1; i>=prinmeCnt-10; i--)
sum += primeNums[i];
else
for (i=0; i<prinmeCnt; i++)
sum += primeNums[i];
printf ("n以内的素数:\n");
printArray (primeNums, prinmeCnt);
printf ("最大的10个素数和:\n%d\n", sum);
getch (); / 屏幕暂留 /
return 0;
}
#include<stdioh>
intmain()
{
inta=0;
intnum=0;
inti;
printf("输入一个整数:");
scanf("%d",&num);
for(i=2;i<num;i++){
if(num%i==0){
a++;
}
}
if(a==0){
printf("%d是素数。\n",num);
}else{
printf("%d不是素数。\n",num);
}
return0;
}
扩展资料:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
基本算法:若k%m==0则说明k不是素数。
判断整数n是否为素数——采用枚举法求解。
采用枚举算法解题的基本思路:
(1)确定枚举对象、枚举范围和判定条件;
(2)枚举可能的解,验证是否是问题的解。
枚举算法的一般结构:while循环。
参考资料来源:百度百科-枚举法
以上就是关于求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。全部的内容,包括:求C或者C++判断一个大数是不是素数,随机产生一个大素数的算法。、求1000以内最大的20个素数之和。 C语言编程 怎么做、编写程序输出n以内最大的10个素数及其之和;如果n以内最大素数不足10个,则按照实际等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)