认真写作业【求n以内素数(C)】

本文深入探讨了使用循环嵌套实现的素数生成算法。通过输入一个整数,该算法能够找出所有小于该整数的素数,并打印出来。算法首先定义了一个外部循环来遍历所有可能的素数,然后通过内部循环检查每个数是否为素数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

----循环嵌套

在这里插入图片描述

#include <stdio.h>
#include <math.h>
int main()
{
int a=0,i=3,j=2;
scanf("%d",&a);
printf("2");
for (i;i<a;i+=2)
{
 for(j;j<(sqrt(i));j++)
 {
   if(i%j==0) break;
 }
 if(j>(sqrt(i)))printf(" %d",i);
}
return 0;
}
好的,以下是一个N以内质数的函数示例(使用的是筛法),使用C语言实现: ```c #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <math.h> int* find_primes(int n) { // 创建一个长度为n+1的数组,用于标记是否为质数 bool *is_prime = (bool*)malloc(sizeof(bool) * (n+1)); // 0和1不是质数,标记为false is_prime[0] = false; is_prime[1] = false; // 其他数字先标记为true for (int i = 2; i <= n; i++) { is_prime[i] = true; } // 开始筛选 for (int i = 2; i <= sqrt(n); i++) { if (is_prime[i]) { // 将i的倍数标记为false for (int j = i*i; j <= n; j += i) { is_prime[j] = false; } } } // 计算质数数量 int count = 0; for (int i = 0; i <= n; i++) { if (is_prime[i]) { count++; } } // 创建一个新的数组,存储所有质数 int *primes = (int*)malloc(sizeof(int) * count); int index = 0; for (int i = 0; i <= n; i++) { if (is_prime[i]) { primes[index++] = i; } } // 释放is_prime数组 free(is_prime); // 返回所有质数 return primes; } int main() { int n = 30; int* primes = find_primes(n); printf("Primes less than or equal to %d: ", n); for (int i = 0; i < sizeof(primes)/sizeof(primes[0]); i++) { printf("%d ", primes[i]); } printf("\n"); // 释放primes数组 free(primes); return 0; } ``` 使用方法: ```c int n = 30; int* primes = find_primes(n); printf("Primes less than or equal to %d: ", n); for (int i = 0; i < sizeof(primes)/sizeof(primes[0]); i++) { printf("%d ", primes[i]); } printf("\n"); // 释放primes数组 free(primes); ``` 这个函数使用的是常见的筛法算法,可以比较快速地找到N以内的所有质数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值