c - 为什么我的这部分代码总是返回值 0?
问题描述
所以,我试图在c中制作一个eratosthenes sieve程序,但是每个值都变成0,特别是这是导致麻烦的部分,但我不知道出了什么问题
for (i = min; i <= max; ++i) {
if (checkprime(nums[i], i)) {
for (count = 2; i * count <= max; ++count) {
nums[(i-1) * count] = 0;
}
}
else nums[i] = 0;
}
这是“检查素”功能
int checkprime(int num,int count) {
for (count = count; count <= num / 2; ++count) {
if (num % count == 0) {
return 0;
break;
}
else {
return 1;
break;
}
}
}
解决方案
显示如何制作筛子和提取素数的示例代码。
#include <stdio.h>
#include <stdlib.h>
#define LIMIT 100
int main(void) {
char *sieve = calloc(LIMIT, sizeof *sieve);
if(sieve == NULL) {
return 1;
}
for(int n = 2; n < LIMIT; n++) {
if(sieve[n] == 0) { // found a prime
printf("%d ", n);
for(int i = n * n; i < LIMIT; i += n) {
sieve[i] = 1; // mark off multiples
}
}
}
printf("\n");
free(sieve);
return 0;
}
程序输出:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
推荐阅读
- java - Java Selenium - Web 元素并非每次都出现,但在某些情况下会出现。我该如何处理?
- python - 绘制具有相同列的 2 个熊猫数据框
- firebase - VS 代码 - 警告 - 没有为在 index.html 中加载 CDN 的 Firebase-auth.js 定义“auth”
- java - 通过 main 的命令行参数传递活动配置文件
- c# - 卸载时 SQLCLR 程序集要快得多
- wordpress - 如何在 woocommerce 中的自定义注册表单上获取所有错误消息
- compilation - SystemVerilog:always_comb 构造不会推断出纯粹的组合逻辑
- html - CSS媒体查询使用多个使用和逻辑运算符未按预期工作
- javascript - 如何添加 setState 方法的属性类型
- api - 来自反应导航的 useFocusEffect() 不总是调用我的 API