求1到100中所有的质数的C语言程序

求1到100中所有的质数的C语言程序,第1张

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

大哥大姐帮忙呀!

解析:

#include <stdioh>

#include <mathh>

bool IsPrime(int n);

void main(void)

{

for (int i = 2; i <= 100; i ++)

{

if (IsPrime(i))

{

printf("%d是质数\r\n", i);

}

}

}

bool IsPrime(int n)

{

int nRoot = int(sqrtf(n));

for (int i = 2; i < nRoot; i ++)

{

if (n % i == 0)

return false;

}

return true;

}

内的2,3,5,7的倍数(除2之外)去掉,就是所有质数啦

#include<iostream>

#include<cmath>

using namespace std;

int main(){

int i,j,sum=0,k=0;

bool flag=true;

for(i=2;i<=100;i++)

{

if(i==2 || (i%2!=0 && i%3!=0 && i%5!=0 && i%7 != 0) )

{

if(k%5==0)

cout<<endl; //每5个换一行

k++;

cout<<i<<" ";

sum += i;

}

}

cout<<endl;

cout<<"总和为:"<<sum<<endl;

return 0;

}

判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数。但是有一个例外,1不属于质数。

c语言中的质数:

数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断的时候就需要考虑这种情况了。如下即可:

while(scanf("%lu", &num) == 1 && num != 1)

1

这里用到了while循环来判断输入的数值并加以判断,如果输入格式正确的话会返回一个1并将输入的数值存入num这个变量中,然后再判断num的值是否为1。

在这里有一条很好用的规则用于素数的判断:测试的数只需要界于2到num的平方根之间的所有数,看它们是否可以整除num。如果可以整除,说明输入的数不是素数;反之,说明输入的数是素数。

到这里,就会有人说平方根怎么求,其实这个很好解决。你完全可以像下面这样描述判断条件:

for(div = 2; (div div) <= num;div++){

if(num % div == 0){

if((div div) != num){

printf("%lu is divisible by %lu and %lu\n", num, div, num / div);

}else {

printf("%lu is divisible by %lu\n", num, div);

在这里,在if条件语句里面还嵌套了一个if条件语句,用来判断两个约数是否是一样的,比如144,约数是12和12,这时候就只需要打印一个约数即可。

第二,我们怎样知道一个数数素数呢?

如果num是素数,程序流程永远也进不了if语句中。为了解决这个问题,可以在循环外设置一个变量为某一值,比方说1,在if语句中将这个变量重设为0。那么,循环完成后,可以检查该变量是否仍然是1。如果是,则从没进入过if语句,这个数是素数。我这里用int类型的变量isPrime来当作一个标志实现这个想法。

好了,结合上面的所有想法,我们开始写代码了:

#include<stdioh>

int main(void)

unsigned long num;// 要检查的数

unsigned long div;// 可能的约数

int isPrime;// 素数的标志,1代表是素数,0代表不是素数

printf("Please enter an integer for analysis ");

printf("Enter q to quit\n");

while(scanf("%lu", &num) == 1 && num != 1)

for(div = 2, isPrime = 1;(div div) <= num; div++){

if(num % div == 0){// 如果能被div整除

if((div div) != num){// 约数不相等

printf("%lu is divisible by %lu and %lu\n", num, div, num / div);

}else{// 约数相同

printf("%lu is divisible by %lu\n", num, div);

// 将isPrime设置为0,表示其不是一个素数

isPrime = 0;

if(isPrime == 1){

printf("%lu 是素数\n", num);

printf("Please enter another integer for analysis ");

printf("Enter q to quit\n");

printf("Bye\n");

return 0;

这里有一个关键就是,在for循环控制表达式中使用了逗号运算符,以针对每个新输入的数将isPrime初始化为1。

以上就是关于求1到100中所有的质数的C语言程序全部的内容,包括:求1到100中所有的质数的C语言程序、c++的程序(求100以内的质数)、c语言中如何判断一个数是否是质数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10215638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存