求助!C语言中输出素数的问题
本帖最后由 974099789 于 2024-3-29 22:10 编辑#include <stdio.h>
#include<math.h>
void main()
{
int r=0,n,i,count;
for(i=100;i<=200;i++)
{
count =0;
for(n=2;n<=sqrt(i);n++)
{
if(i%n==0)
{count=1;
break;
}
}
if(count ==0)
{r++;
if(r%5==0)
{printf("\n");
}
printf("%d ",i);
}
}
}
打印出的结果是这样的,为什么同一个数字会输出多次
你好!要输出素数,首先需要明确什么是素数。素数是指只能被1和自身整除的整数,即除了1和它本身之外没有其他因数的数。
下面是一个可以输出某个范围内的素数的C语言代码示例:
#include <stdio.h>
int isPrime(int num)
{
if(num <= 1)
return 0; // 不是素数
for(int i=2;i<num;i++)
{
if(num % i == 0)
return 0; // 不是素数
}
return 1; // 是素数
}
int main()
{
int start, end;
printf("请输入要寻找素数的起始值和结束值: ");
scanf("%d %d", &start, &end);
printf("%d到%d的素数有:\n", start, end);
for(int i=start; i<=end; i++)
{
if(isPrime(i))
printf("%d ", i);
}
return 0;
}
在这个代码中,我们定义了一个`isPrime()`函数来判断某个数是否是素数。然后在`main()`函数中,我们可以输入一个起始值和结束值,程序会输出这个范围内的所有素数。
希望对你有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 顺带一提,我用ChatGpt抓虫后结果是这样的:
#include <stdio.h>
#include <math.h>
void main() {
int r = 0, n, i, count;
for (i = 100; i <= 200; i++) {
count = 0; // 初始化 count
for (n = 2; n <= sqrt(i); n++) {
if (i % n == 0) {
count = 1; // 如果能够被整除,count 设为 1
break;
}
}
if (count == 0) { // 如果 count 仍然为 0,则是素数
r++;
if (r % 5 == 0) {
printf("\n");
}
printf("%d ", i);
}
}
}
这个代码输出没有上述情况,我反复对照感觉没啥问题。。。。。。(可能我瞎了?) 974099789 发表于 2024-03-29 22:09
顺带一提,我用ChatGpt抓虫后结果是这样的:
#includ ...
哦,抱歉看到这个问题了。ChatGPT在转换代码时可能会出现一些问题,导致格式混乱。我给你重新整理一下代码:#include <stdio.h>
int isPrime(int num){
if(num <= 1){
return 0;
}
for(int i=2; i<=num/2; i++){
if(num % i == 0){
return 0;
}
}
return 1;
}
int main() {
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
printf("从2到%d的所有素数为:\n", n);
for(int i=2; i<=n; i++){
if(isPrime(i)){
printf("%d ", i);
}
}
return 0;
}
这段代码定义了一个函数isPrime,用于判断一个数是否为素数。然后在主函数中,首先获取用户输入的一个整数n,然后遍历从2到n的所有数字,如果某个数是素数,则输出它。最后返回0表示程序执行成功。请尝试使用这段代码,如果还有其他问题或疑问,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]