Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅使用循环的c中给定范围的素数_C_Loops - Fatal编程技术网

仅使用循环的c中给定范围的素数

仅使用循环的c中给定范围的素数,c,loops,C,Loops,我如何用c语言编写一个程序,在不使用任何条件(只使用循环!)的情况下给出给定范围内的所有素数。我尝试了许多不同的选择,但没有一个能正常工作。。。 例如: 我已经尝试过的: #include <stdlib.h> #include <stdio.h> #define UNTIL 1000 #define NOT_INCLUDED 2 int main() { int prime =1, i =1,factor=0; for(prime=1;UNTIL>=p

我如何用c语言编写一个程序,在不使用任何条件(只使用循环!)的情况下给出给定范围内的所有素数。我尝试了许多不同的选择,但没有一个能正常工作。。。 例如:

我已经尝试过的:

#include <stdlib.h>
#include <stdio.h>

#define UNTIL 1000
#define NOT_INCLUDED 2
int main()
{
int prime =1, i =1,factor=0;

    for(prime=1;UNTIL>=prime ;prime++)
    {
        for( i=1;i<=prime;i++)
        {
            for(;prime%i==0;)
            {
                factor++;
            }
        }

        for(;factor==2;factor=0)
        {
            printf("prime number: %d \n",prime);
        }
    }

    return 0;
}
#包括
#包括
#定义到1000
#定义未包含的内容2
int main()
{
int素数=1,i=1,因子=0;
for(prime=1;直到>=prime;prime++)
{

对于(i=1;i接受挑战:无隐藏或其他条件

#include <stdio.h>
#include <stdlib.h> // atoi

int main(void) {
    const char *p = "2 3 5 7 11 13 17 19 23 29\0\0\0\0\0"; /* extend at will */
    for (;;) {
        p += printf("%d ", atoi(p));
        fflush(stdout);
        int z = 42 / *p;
        (void)z; /* unused warning */
    }
    return 0;
}
#包括
#包括//atoi
内部主(空){
const char*p=“2 3 5 7 11 13 17 19 23 29\0\0\0\0”/*任意扩展*/
对于(;;){
p+=printf(“%d”,atoi(p));
fflush(stdout);
int z=42/*p;
(无效)z;/*未使用的警告*/
}
返回0;
}

查看运行在上的代码以检查
N
是否为素数,迭代从
2
N
的所有数字,以查看
N
是否可被任何其他数字整除。每个数字都可被
1
整除,因此当您测试素数时,开始测试
2

范例

#include <stdio.h>

int is_prime(int N)
{
    //0 and 1 are not primes
    if (N < 2)
        return 0;

    //start testing against 2
    for(int i = 2; i < N; i++) 
        if(N % i == 0)
            return 0; //not a prime

    return 1; //prime
}

int main()
{
    printf("Primes from 0 to 1000:\n");

    for(int i = 0; i < 1000; i++)
        if(is_prime(i))
            printf("%d, ", i);

    printf("\n");
    return 0;
}

请向我们展示那些不同的(可编译的)选项并告诉我们失败的地方。提示:每个循环都有一个条件。这取决于您是否明智地使用此条件。这似乎很愚蠢。循环运行直到满足一个条件。不太明显的答案是:小心。非常明显的问题是:为什么要?#include#include#define to 1000#define not(u include 2 int main){int prime=1,i=1,factor=0;for(prime=1;直到>=prime;prime++){for(i=1;i
for(int i = 2; i <= N/2; i++) 
    if(N % i == 0)
        return 0; //not a prime
return 1;//prime