- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,使用埃拉托斯特尼筛法查找 1000 之前的素数...但是它不起作用...这是我的整个代码,但是查找素数的“计算”位于函数“markPrimes”内部(我确信其余代码都没有问题,所以我很确定问题出在这个函数中......
#include <stdio.h>
#include <stdlib.h>
typedef struct primal
{
int number; /* a number */
char mark; /* flag marking the number as active (1) or inactive (0) */
} primal;
void initialize(primal *s,int size)
{
int i;
for(i=0;i<1000;i++)
{
s[i].number=i+1;
s[i].mark=1; //1=prime number
}
}
void markPrimes(primal *s,int size)
{
/* add this function - it should mark all of the numbers in the passed primal array that are not prime numbers as inactive */
//Brute Sieve of Eratosthenes Approach (0=not prime number)
s[0].mark=0; //s[0].number=1 as on the function "initialize" I start from 1 not from 0
int i,j;
for (unsigned i = 2; i*i <size; i++)
{
if (s[i].mark == 1)
for (unsigned j = i<<1;j<size;j+=i)
s[j].mark = 0;
}
}
int main(void)
{
int i,j,prime_numbers[200];
primal source_numbers[1000]; /* an array of source values */
for(i=0;i<200;i++) prime_numbers[i]=0; /* initialize the prime numbers array to 0 */
initialize(source_numbers,1000); /* initialize the source numbers array to hold the numbers 1-1000 */
markPrimes(source_numbers,1000); /* identify the prime numbers in the source numbers array */
/* copy the primes from the source numbers to the prime numbers array */
for(i=0,j=0;i<1000;i++)
{
if(source_numbers[i].mark==1) /* if the current source number is a prime */
{
prime_numbers[j]=source_numbers[i].number; /* copy the number */
j++; /* increment the target index */
}
}
/* print the prime numbers */
for(i=0,j=0;prime_numbers[i]!=0;i++,j++)
{
printf("%3d ",prime_numbers[i]);
if(j==9) /* periodically print a newline and then reset j */
{
printf("\n");
j=-1;
}
}
return 0;
}
最佳答案
众所周知,C 允许程序员在他们的脚上打点(别担心,我们每个人都有这样的疤痕),这就是这里发生的事情。
在您的内部循环中,您从 1 开始,而不是 0,因此您需要将实际数字减一作为索引,并添加该数字而不是索引:
void markPrimes(primal *s,int size)
{
//Brute Sieve of Eratosthenes Approach (0=not prime number)
int i,j;
// 1 (one) is not prime per definition
s[0].mark = 0;
for (i = 1; i*i <size; i++)
{;
if (s[i].mark == 1) {
// you start at 1 instead of 0, so you need to take the actual number
// minus one as the index and add that number instead of the index.
for ( j = 2 * s[i].number - 1;j < size; j += s[i].number){
s[j].mark = 0;
}
}
}
}
关于c - 埃拉托斯特尼筛法,素数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217138/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!