对输入的任意正整数N,输出2到N之间所有质数及质数的个数 用VFP程序做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对输入的任意正整数N,输出2到N之间所有质数及质数的个数 用VFP程序做相关的知识,希望对你有一定的参考价值。

参考技术A clear
input "请输入一个数:" to n
?"这些质数有:"
s=0
for i=2 to n
x=0
for j=2 to i-1
if i/j=int(i/j)
x=1
endif
endfor
if x=0
?alltrim(str(i))+" "
s=s+i
endif
endfor
?"它们的和:",s

AC日记 - - - 3

题目描述

令P[i](i=0,1,2,...) 表示第i个质数。给出两个正整数M和N(1 <= M <= N <= 5*10^5)。你来输出从P[M] 到P[N]的所有质数。

输入

输入包括多组测试用例,至EOF结束。每组测试用例为一行,给出了两个整数M和N。

输出

每组测试用例对应一组输出:从P[M]到P[N]的所有质数。每10个整数输出为一行,并且行尾没有空格。每两组测试用例的输出之间应有一个空行。

样例输入

5 27

样例输出

11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103

提示

P[500000]=7368787

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
static int  p[8000000],su[500000];
void set(void) //函数set既不需要参数,也不会返回数据
{
    int i1, i2, i, j=1;
    for(i1=2;i1<=7368787;i1++)
         {
             if(p[i1]!=0)
                continue ;
             for(i2=i1+i1;i2<=7368787;i2+=i1)
             {
                 p[i2]++;
             }
         }
         for(i=2;i<=7368787;i++)
         {
             if(p[i]==0)
             {
                 su[j]=i;
                 j++;
             }
         }

}
int main()
{

    int m, n;
    int i, t=0, temp;
    set();
    while(scanf("%d %d", &m, &n)!=EOF)
    {
         t=0;
        for(i=m;i<=n;i++)
        {
            if(t%10==0&&t!=0)
                printf("\n");
            if((i-m+1)%10==1)
            {
                printf("%d",su[i]);
                t++;
            }

            else
            {
                printf(" %d",su[i]);
                t++;
            }

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

  

 

以上是关于对输入的任意正整数N,输出2到N之间所有质数及质数的个数 用VFP程序做的主要内容,如果未能解决你的问题,请参考以下文章

集合中的质数

1.13.21

最大质因子序列

E.集合中的质数

NOI 1.5 44:第n小的质数

面试题:求质数的算法