C语言 用筛法求1-1000之间的素数

C语言 用筛法求1-1000之间的素数,第1张

1、写我们的头文件和主函数。写好我们的开头。

2、编写定义变量,我们语言定义一个i来用于后面的for循环。

3、输入一个数,在那之前我们要有一个printf()提示一下,显得程序有调理。

4、利用for循环看一看从2到n-1是否能被n整除,如果能就要break。

5、判断素数,如果程序正常结束,就i>=n,说明他就是素数。

6、如果通过break结束,他就会i<n,所以他就不是素数。

用VF的:

判断一个数是否为素数

CLEAR

INPUT '请输入一个大于3的整数:' TO num

判断num是否能够被2~SQRT(num)之间的某一个数整除:如果能够被某数整除,则不是素数,否则为素数

devide = 2

flag = 1 && 标记是否为素数 0--不是素数 1--是素数

循环遍历

DO WHILE devide <= INT(SQRT(num))

IF num % devide = 0 && 判断num能否被devide整除

flag = 0 && 标记不是素数

EXIT

ENDIF

devide = devide + 1 && 构建退出循环的条件

ENDDO

判断并输出结果

IF flag = 1

'是素数'

ELSE

'不是素数'

ENDIF

'程序结束'

RETURN

1000以内素数:

输出1000以内所有的素数:二重循环

CLEAR

num = 3

DO WHILE num <= 1000

判断num是否能够被2~SQRT(num)之间的某一个数整除:如果能够被某数整除,则不是素数,否则为素数

devide = 2

flag = 1 && 标记是否为素数 0--不是素数 1--是素数

循环遍历

DO WHILE devide <= INT(SQRT(num))

IF num % devide = 0 && 判断num能否被devide整除

flag = 0 && 标记不是素数

EXIT

ENDIF

devide = devide + 1 && 构建退出循环的条件

ENDDO

IF flag=1

num

ENDIF

num自增1

num = num + 1

ENDDO

给你个判断素数的函数,自己在主程序搞个循环就可以输出了:

/ 用于判断输入的数是否为素数

// 参数number为需要判断的数

// 当number为素数时返回true,否则返回false

/

bool judgeprime(int number)

{

int i = 0;

if( 2 == number ) return true;

int sq= (int)sqrt((float)number);

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

if(number % i == 0)

return false;

return true;

}

一个素数是指只能被1和自身整除的正整数,例如2,3,5,7等。为了找出1000以内的最大的20个素数,我们可以从999开始递减地检查每个奇数是否是素数,直到找到20个为止。然后我们把这20个素数相加得到和。

下面是一个可能的C语言程序:

#include <stdioh>#include <mathh>// 判断一个正整数是否是素数int is_prime(int n) { // 1不是素数

if (n == 1) return 0; // 2是唯一的偶数素数

if (n == 2) return 1; // 其他偶数不是素数

if (n % 2 == 0) return 0; // 检查从3到sqrt(n)之间的奇数因子

for (int i = 3; i <= sqrt(n); i += 2) { if (n % i == 0) return 0;

} // 没有找到因子,说明是素数

return 1;

}// 计算1000以内的最大的20个素数之和int main() { int sum = 0; // 素数之和

int count = 0; // 素数个数

int n = 999; // 当前检查的奇数

while (count < 20) { // 如果n是素数,就累加到sum,并增加count

if (is_prime(n)) {

sum += n;

count++;

} // 下一个要检查的奇数

n -= 2;

} printf("The sum of the largest 20 prime numbers under 1000 is %d\n", sum);

return 0;

}

可以参考下面的代码:

#include <stdioh>

#include <mathh>

int is_prime(int n)

{

int i;

for(i = 2; i <= sqrt(n); i ++)

if(n%i == 0) return 0;

return 1;

}

int main()

{

int i,n=0;

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

{

if(is_prime(i))

{

printf("%d ",i);

n++;

if(n%5==0)printf("\n");

}

}

}

扩展资料:

C语言参考函数:

double pow(double x,double y) 返回x^y的值

double pow10(int p) 返回10^p的值

double sqrt(double x) 返回+√x的值

C语言isupper()函数:判断一个字符是否是大写字母

C语言isspace()函数:判断一个字符是否是空白符

C语言isprint()函数:判断一个字符是否是可打印字符

参考资料来源:百度百科-C语言函数

以上就是关于C语言 用筛法求1-1000之间的素数全部的内容,包括:C语言 用筛法求1-1000之间的素数、设计一个程序判断一个数是否为素数并求1000以内素数个数、编写程序,求出并输出1000以内的所有素数.用C++语言表示.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9504380.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存