找出2到一百以内的所有素数
#include<stdio.h>#include<math.h>
int main()
{
int k,i,tag;
printf("2,");
for(i=3;i<-100;i+=2)
{
tag=0;
for(k=2;tag==0&&k<sqrt(i);k++)
if(i%k==0)tag=1;
if(tag==0)printf("%d,",i);
}
}
编译器说sqrt有问题 这样试试:
#include <stdio.h>
#include <math.h>
int main()
{
int k, i, tag;
printf("2,");
for (i = 3; i <= 100; i += 2)
{
tag = 0;
for (k = 2; tag == 0 && k < sqrt(i); k++)
if (i % k == 0)
tag = 1;
if (tag == 0)
printf("%d,", i);
}
} zltzlt 发表于 2020-8-19 16:17
这样试试:
“sqrt”: 对重载函数的调用不明确 崔铭1315 发表于 2020-8-19 16:20
“sqrt”: 对重载函数的调用不明确
你用的什么编译器?我这测试没问题 zltzlt 发表于 2020-8-19 16:20
你用的什么编译器?我这测试没问题
VC++2010 崔铭1315 发表于 2020-8-19 16:22
VC++2010
别用 VC++ 了,用 Dev-C++ 吧:https://fishc.com.cn/forum.php?mod=viewthread&tid=173862
崔铭1315 发表于 2020-8-19 16:22
VC++2010
用 VS2019 吧,https://fishc.com.cn/thread-175256-1-1.html 本帖最后由 风过无痕1989 于 2020-8-19 17:19 编辑
你想找到多少以内的素数,由你定:
#include <stdio.h>
#include <math.h>
int prime_number(int x);
int main()
{
int total = 0;
int temp = 0;
int m = 0; // 输入的整数
int i; // 循环次数
printf("输入一个整数:");
scanf("%d",&m);
for(i = 2;i <= m;i++)
{
temp = prime_number(i);
if(temp == 1)
{
printf("%d 是素数\n", i);
total++;
}
}
printf("%d 以内有 %d 个素数\n",m,total);
return 0;
}
int prime_number(int i)
{
int j;
int n = 0;
int temp = 0;
int k; // i 的平方根
k = (int)sqrt( (double)i ); // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换i的类型
for(j = 2;j <= k;j++)
{
if (i%j==0) //若求余为0,说明不是素数,则可以直接返回0
return 0;
}
return 1; //若循环结束,都没有发现求余为0,则说明是素数,返回1
}
永恒的蓝色梦想 发表于 2020-8-19 16:29
用 VS2019 吧,https://fishc.com.cn/thread-175256-1-1.html
下好了,我爱你{:10_297:}{:10_281:}
页:
[1]