//List Style
using System;
using System.Collections.Generic;
using System.Linq;
public class pr{
static public void Main(){
int n, i, j, k, l, sum,flag = 0;
//int sum = i+j;
//int k = (n-i);
//int l = (n-j);
//System.Console.WriteLine ("Enter a number");
//n = Convert.ToInt32 (Console.ReadLine());
//List <int> primes = new List <int>(); //list to handle the numbers
//HashSet <int> myPrimes = new HashSet <int> (primes);
System.Console.WriteLine ("Enter a number");
n = Convert.ToInt32 (Console.ReadLine());
//myPrimes.Add(n);
//myPrimes.Add(i);
//myPrimes.Add(j);
// var count = string.Join(", ", primes);
//System.Console.WriteLine("The value of n is {0}",myPrimes);
for(i=3; i<n/2; i++){
for(j=3; j<n/2; j++){
if(checkPrime(i) == 1){
if(checkPrime(j) == 1){
if (checkPrime(n-i) == 1){
if (checkPrime(n-j) == 1){
//if(i == j){
//sum = i+j;
System.Console.WriteLine("{0}={1}+{2}\n",n,i,n-i);
//}
}
}
}
}
if (flag == 0 && (n-i) <= 0 && (n-j) <= 0){ //check to avoid dupes
if (n <= 0 && i <= 0 && j <= 0){
Console.Write("{0}\n",n);
}
}
}
}
}
public static int checkPrime(int n){
int i, j, flag = 1;
for (i = 2; i<=(Math.Sqrt(n)); i++){
for (j = 2; j<=(Math.Sqrt(n)); j++){
if (n%i == 0 && n%j == 0){ //even number check
i++;
j++;
flag = 0;
}
}
}
return flag;
}
}
Так что я экспериментировал с этим некоторое время. Кажется, я не могу напечатать все возможные решения. Например, для 24 я могу печатать 7 + 17, но не 2 + 5 + 17. Также повторяются некоторые ответы, и это может иметь отношение к тому, что у меня нет дубликатов чеков. Я попытался нажать целые числа в списке, а затем использовать hashset, чтобы иметь только целые числа, но я застрял и попытался переборщить его. Все числа, подлежащие печати, должны быть разными целыми числами. Я не понимаю, как печатать все отдельные цифры, и есть ли элегантный способ распечатать все возможное.Сумма чисел как отдельные цифры
Спасибо за помощь!
Не могли бы вы проверить свой код? кажется, скобка не закрыта должным образом – Prisoner
Также лучший отступ помогает! –