程序问题求解
本帖最后由 蹈厉 于 2020-8-21 19:12 编辑有没有大神会写一个求素数个数的程序,让用户输入一个数字,运算后告诉用户这个数以内的素数的个数,要c版的。 我可以理解为要么1个,要么0个吗? 你要的是这个数以内的素数个数吧?
import math
def prime(n):
result=0
if n<=1:
return 0
for i in range(2,n+1):
for j in range(2,int(math.sqrt(i))+1):
if i%j == 0:
break
else:
result+=1
return result sunrise085 发表于 2020-8-21 19:00
你要的是这个数以内的素数个数吧?
C++ 版…… sunrise085 发表于 2020-8-21 19:00
你要的是这个数以内的素数个数吧?
是的 本帖最后由 sunrise085 于 2020-8-21 19:59 编辑
不好意思,刚刚看错了
C语言版
#include<stdio.h>
#include<math.h>
int prime(int n)
{
int result=0,flag;
for (int i=2; i<=n;i++)
{
flag=1;
for (int j=2;j<= sqrt(i);j++)
{
if (i%j == 0)
{
flag=0;
break;
}
}
if(flag)
result+=1;
}
return result;
}
int main()
{
int n,result;
printf("请输入一个整数:");
scanf("%d", &n);
result=prime(n);
printf("n=%d,result=%d",n,result);
return 0;
} 蹈厉 发表于 2020-8-21 19:11
是的
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int prime(int num)
{
int ans = 0;
for(int i = 2; i <= num; i++)
{
bool flag = true;
for(int j = 2; j <= sqrt(i); j++)
{
if(i%j==0)
{
flag = false;
break;
}
}
if(flag)
++ans;
}
return ans;
}
int main()
{
printf("请输入一个正整数: ");
int number;
scanf("%d",&number);
int ans = prime(number);
printf("这个数以内的素数个数为: %d\n",ans);
return 0;
} 楼上两位的效率都不太行{:10_277:}
页:
[1]