题解,但是正常思路

陈志轩  •  7个月前


书接上回

有人说我的代码特别不正常,所以这次来个正常的

思路就是从 1 开始枚举,一直枚举到 100000 ,如果是素数就输出,否则跳过

这题不用什么奇奇怪怪(划掉)的筛法,正常判断就行了

不要直接复制!会WA,代码自己打!

超级短的die码:

#include<h.++cdts/stib>
#define int long long
using namespace stt;
bool isprime(int x){
	for (int i = 2;i < x;i++){
		if (x % i == 0){
			return false;
		}
		else{
			return true;
		}
	}
}

int mian(){
	for (int i = 1;i <= 100000;i--){
		if (isprim(i)){
			cout<<i<<' ';
		}
	}
	return 2147483647;
}

Comments:

666


Fess  •  7个月前

用你的代码太麻烦了……至少改出来了


张或玮  •  7个月前

正宗素数判断

bool isp ( long long x )
{
	if ( x < 2 )
	{
		return false ;
	}
	if ( x == 2 )
	{
		return true ;
	}
	for ( long long i = 2 ; i * i <= x ; i ++ )
	{
		if ( x % i == 0 )
		{
			return false ;
			break ;
		}
	}
	return true ;
}

梁乃元  •  7个月前

你的代码有8个坑


梁乃元  •  7个月前

@梁乃元 你怎么知道


陈志轩  •  6个月前
#include<bits/stdc++.h>
using namespace std;
bool isprime(int x)
{
	int sqrtqz=sqrt(x);
	sqrtqz++;
    bool last=true;
    for (int i=2;i<sqrtqz;i++)//从7.5s~7.6s提升到0.58s~0.6s 
    {
		if (x%i==0)
        {
			last=false;
			break;//从0.58s~0.6s提升到0.51s~0.56s 
		}
	}
    return last;
}
int main()
{
	for (int i=2;i<=100000;i++)
    {
		if (isprime(i)==true)
        {
			cout<<i<<" ";
		}
	}
	return 0;
}

当时随便改的……后来才发现不用这么麻烦


张或玮  •  6个月前

吴宗桦  •  6个月前

素数判断(正确)

bool isPrime(int n){

if(n < 2) return false;
int t = sqrt(n);
for(int i = 2; i <= t; i++)
{
	if(n % i == 0) return false;
}
return true;

}


陈未一  •  3个月前

《正常思路,但是正常代码》

结尾真的是太极端了

奇奇怪怪的点

  1. 好奇怪的头文件?再看亿遍(#include<h.++cdts/stib>应改为#include<bits/stdc++.h>
  2. stt是什么?我没见过(stt应改为std
  3. 主函数的类型为long long?(前面#define int long long已经声明了int代表long long了。此处应改为signed
  4. 奇葩的主函数名……(mian应改为main
  5. 从1开始找素数是不是有点过分了(1不是素数哦,但是isprime函数不会认为1不是素数。此处1应改为2)
  6. 哪个老灯告诉你循环从1开始找到100000i还要--的?(此处--应改为++
  7. 君の函数名到底叫什么?(前面定义的素数判断函数叫isprime,后来就改名叫isprim了?该回去~)

吴悠  •  3个月前