1 条题解

  • 0
    @ 2024-12-24 9:48:47

    C :

    #include <stdio.h>
    int a[500001];
    void fun(int start,int a[],int len)
    {
        int k = start,nu=a[start];
        for(int i = k ; i <=len  ; i++ )
            if(i%nu!=0)
             a[k++]=a[i];
                k++;
        if(nu<=len)
            fun(start+1,a,k);
    }
    int main()
    {   int i,n,m,count = 0;
    	while(scanf("%d%d",&n,&m)!=EOF)
        {
          count=0;
        for(i  = 1 ; i <= m ;i++)
            a[i]=2*i-1;
        fun(2,a,m);
        for(i = 1 ; i <=m ; i++)
             if(a[i]>n && a[i]<m)
                count ++;
        printf("%d\n",count);
        }
    	return 0;
    }
    
    

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    using namespace std;
    #define mmax 500010
    int a[500010],b[500010];
    int mx=mmax;
    void fun()
    {
        int i,j,kk,km,per;
        a[1]=1;
        for(i=2;i<mx;i++)
            a[i]=a[i-1]+2;
            per=2;
        while( per+a[per]  < mx)
        {
            kk=1;
            for(j=1;j<mx;j++)
                if(j%a[per]!=0)
                 b[kk++]=a[j];
                 mx=kk+1;
                 for(j=1; j<mx; j++)
                    a[j]=b[j];
            per++;
        }
    }
    int main()
    {
    int i,j,k,t,count,m,n;
       while (cin>>m>>n)
    {
        mx=n;
        fun();
        count=0;
        for(int j=1;j<n;j++)
        {
            if(a[j]>m && a[j]<n)
                count++;
        }
        cout<<count<<endl;
    }
        return 0;
    }
    

    Java :

    import java.util.ArrayList;
    import java.util.Scanner;
    public class Main{
    	public static ArrayList<Integer> temp;
    	public static int flag;
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()) {
            	int a=sc.nextInt();
            	int b=sc.nextInt();
            	temp=new ArrayList();
            	for(int i=0;i<b/2;i++) {
            		temp.add(i*2+1);
            	}
            	flag=1;
            	jian();
            	int s=0;
            	for(int i=0;i<temp.size();i++) {
            		if(temp.get(i)>a&&temp.get(i)<b) {
            			s++;
            		}
            	}
            	System.out.println(s);
            }
             
        }
       public static void jian() {
    	   if(flag>=temp.size())
    		   return;
    	   int x=temp.get(flag);
    
    	   for(int i=temp.size()-1;i>-1;i--) {
    		  if((i+1)%x==0) {
    			  temp.remove(i);
    		  }
    	   }
    	   flag++;
    	   jian();
       }
    }
     
    
    • 1

    信息

    ID
    682
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者