cpython3


私信TA

用户名:smartZhou

访问量:80320

签 名:

等  级
排  名 35
经  验 13999
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

解题思路:
假如i是素数,则i不能整除2~i之间的所有数,定义一个变量j,取 2~i之间所有值。如果中间的数都不能除尽,
那么一起循环到最后一次j变成i时,i%j==i%i==0 这个时候i==j ,i就一定是素数。如果在j=0~i的循环中途
就出现i%j==0,说明i一定不是素数.



参考代码:

#include <stdio.h>
int main()
{
    int N,i,j;
    scanf("%d",&N);
    for(i=2; i<=N; i++)	     //遍历2~N之间的所有数 
    {
        for(j=2; j<=i; j++)  //j相当于0~i之间的所有数,i%如果除0~i之间的所有数都都不能除尽,那么i是素数。 
        {                    //i%j==0说明i能整除j  当i和j相等时,那么i%j必须为0 
            if(i%j==0&&i!=j) //如果j不是在最后一个i=j的情况下i%j==0,说明在j在取0~i的某个值时,i能将其整除,因此i肯定不是素数。  
                break;
            if(i%j==0&&i==j) //说明i%(0~i之间)都不能除尽,只有最后i==j的情况下才能除尽,此时已经把所有数都判断完了,i是素数 
                printf("%d\n",i);
        }
    }
    return 0;
}


 

0.0分

8 人评分

  评论区

int n,i,j;
	bool flag=1;
	scanf("%d",&n);
	for(i=2;i<=n;i++){
		for(j=2;j<=i/2;j++){
			if(i%j==0){
				flag=0;
				break;
			}
		}
	if(flag) printf("%d\n",i);
	flag=1;
	} 
为什么编译错误
2019-10-16 19:02:29
#include <stdio.h>
int main()
{
    int N,i,a,b;
    scanf("%d",&N);
    for(i=1;i<N;i++)
    {
        for(a=2;a<i;a++)
        {
            if(i%a==0)
            {
                b++;
            }
        }

        if(b==0)
        {
            printf("%d\n",i);
        }


        b=0;
    }
    return 0;
}

请问为什么答案错误?
2019-10-15 00:05:14
#include<stdio.h>
int main()
{
    int i,n,j;
    scanf("%d", &n);    
    for(i=2;i<=n;i++)
    {
    	for(j=2;j<=i;j++) 
    	{
    		if(i%j==0)
    		{   
				if(j==i)
					printf("%d\n",i); 			
    			break;
			}			
		}
	}    
    return 0;
}
2019-10-13 18:53:46
#include<stdio.h>
int main()
{
	int N,i=2,x=2;
	scanf("%d",&N);
	while(x!=N)
	{
	for(i=2;i<x;i++)
	  {
		if(x%i==0)
		break;
	  }
	if(i==x)
	printf("%d\n",x);
	x++;
    }
	return 0;
}
2019-10-02 17:57:46
  • «
  • 1
  • »