C语言判断素数?

题目要求输入m,输出小于m的十个素数,题目保证输入的m在50到2000之间。要求输出的素数按照大到小排。我写的为什么不对?
#include <stdio.h>
int main(int argc, char *argv[])
{
int m,n,i,k=1,a=0;
scanf("%d",&m);
n=m-1;
for(;a<10;){
for(i=2;i<n;i++){
if(a%i==0){k=0;break;}
else k=1;

}
n--;
if (k==1){printf("%d",n);a++;}
}
return 0;
}
我的思路是从输出的m-1开始判断的

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
int prime(int x){
for(int i=2;i<x;i++){
if(x%i==0)
return 0;
}
return 1;
}
int main(){
int a=0; // 素数的个数
int num[9]; // 输入的整数
int numl[9]={0};
printf("输入10个整数:\n");
cfu:
//有个小BUG需要输入11个数,最后一个不算入计算之内。
for(int i = 0;i < 10;i++){
scanf("%d\n",&num[i]);
}
for (int i = 0;i < 10;i++)
{
if (num[i] >= 50 && num[i] <= 2000)
{
//判断是不是素数;
if(prime(num[i])==1){
printf("%d 不是素数\n",num[i]);
}
else{
printf("%d 是素数\n",num[i]);
numl[a++] = num[i];
}
}else{
printf("请输入50到2000之间的数\n");
goto cfu;
}
}
//排序写在这里就可以了。
int lenth = a;
cout << "长度为: "<< lenth << endl;
for (int i = 0;i < lenth-1;i++)
{
for (int j = 0;j < lenth-1-i;j++)
{
if (numl[j] < numl[j+1] )
{
int temps = numl[j];
numl[j] = numl[j+1];
numl[j+1] = temps;
}
}
}
for (int i=0;i<lenth;i++)
{
printf("%d ",numl[i]);
}
while(1);
return 0;
}
//好像看错题了,我的是输入10个数判断是否是素数,,,,,
//这个重新写了一个,就符合题的意思了,你想输出其他的素数就自己加条件,当成拓展就可以了.
#include "stdafx.h"
#include <iostream>
using namespace std;
int prime(int x){
for(int i= 2;i< x ; i++){
if(x%i == 0)
return 0;
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int m,k=0;
int arr[2000]={0};
printf("输入50到2000之间的整数: ");
cfu:
scanf("%d",&m);
if (m >= 50 && m <= 2000)
{
//判断在m以内有素数
for (int i =2;i < m; i++)
{
if (prime(i)==1){
printf("%d 是素数\n",i);
arr[k++]= i;
if (k == 10)
{
break;
}
}else{
printf("%d 不是素数\n",i);

}
}

}else{
printf("输入50到2000之间的整数");
goto cfu;
}
cout << "K的值: "<< k << endl;
for (int i = 0;i < k-1;i++)
{
for (int j = 0;j < k-1-i;j++)
{
if (arr[j] < arr[j+1] )
{
int temps = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temps;
}
}
}
printf("10个数排序:");
for (int i = 0;i< k; i++)
{
printf("%d ",arr[i]);
}
while(1);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-25

介绍三种使用C语言来判断素数的方法,以及用做素数表来判断找素数的方法。

第2个回答  2020-03-26
第3个回答  2020-02-19
第4个回答  2019-11-16
从大到小排列 应该是for(i=n;i>=2;i--) 并且找到后n等于素数减1 从这里开始算追问

你可以帮我改一下吗?

我运行没结果啊

追答

上面有个判断素数的函数

for(i=n;i>=2;i--)
if(prime(i))
printf("%d ",i);

你用了a%i来判断是错的